andrew@1: /* andrew@1: * RecordedMultitrackAudio.cpp andrew@1: * MultipleAudioMathcher andrew@1: * andrew@1: * Created by Andrew on 31/01/2012. andrew@1: * Copyright 2012 QMUL. All rights reserved. andrew@1: * andrew@1: */ andrew@1: andrew@1: #include "RecordedMultitrackAudio.h" andrew@1: andrew@1: andrew@1: void RecordedMultitrackAudio::loadTestAudio(){ andrew@26: andrew@7: trackScreenHeight = 0.15; andrew@26: andrew@1: printf("loaded max val is %f\n", loadedAudioFiles[0].fileLoader.onsetDetect.onsetDetector.maximumDetectionValue); andrew@1: andrew@33: setDifferentMultitracks(13);//command to load this set of audio files - see below andrew@26: andrew@31: //number 7 is problematic with memory andrew@26: andrew@26: printf("AFTER LOADING: \n"); andrew@1: printInfo(); andrew@7: andrew@1: andrew@31: numberOfAudioTracks = 4; andrew@26: andrew@1: andrew@1: } andrew@1: andrew@23: void RecordedMultitrackAudio::setDifferentMultitracks(const int& setToLoad){ andrew@23: const char *kickfilename ;//= "../../../data/sound/LiveDues/kick_liveDues.wav"; andrew@23: const char *bassfilename ;//"../../../data/sound/LiveDues/bass_upsideLive.wav"; andrew@23: const char *snarefilename ; andrew@31: const char *guitarfilename ; andrew@23: andrew@23: switch (setToLoad) { andrew@23: case 0: andrew@23: kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav"; andrew@23: bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav"; andrew@23: snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav"; andrew@23: break; andrew@23: case 1: andrew@23: kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav"; andrew@23: bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav"; andrew@23: snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav"; andrew@26: break; andrew@23: case 2: andrew@23: kickfilename = "../../../data/sound/LiveIdiot2/02kick_bip.wav"; andrew@23: bassfilename = "../../../data/sound/LiveIdiot2/01bass_bip.wav"; andrew@23: snarefilename = "../../../data/sound/LiveIdiot2/03snare_bip.wav"; andrew@23: break; andrew@23: case 3: andrew@23: kickfilename = "../../../data/sound/UistLive1/02kick_bip.wav"; andrew@23: bassfilename = "../../../data/sound/UistLive1/01bass_bip.wav"; andrew@23: snarefilename = "../../../data/sound/UistLive1/03snare_bip.wav"; andrew@23: break; andrew@28: andrew@28: case 4: andrew@28: kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/kick d112_bip.wav"; andrew@28: bassfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/bass di_bip.wav"; andrew@28: snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/snare_bip.wav"; andrew@28: break; andrew@29: case 5: andrew@31: kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/02kick_bip.wav"; andrew@31: bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/01bass_bip.wav"; andrew@31: snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/03snare_bip.wav"; andrew@32: guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/04elec_bip.wav"; andrew@29: break; andrew@31: case 6: andrew@31: kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/02kick_bip.wav"; andrew@31: bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/01bass_bip.wav"; andrew@31: snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/03snare_bip.wav"; andrew@32: guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/04elec_bip.wav"; andrew@31: break; andrew@31: andrew@31: case 7: andrew@31: kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/02kick_bip.wav"; andrew@31: bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/01bass_bip.wav"; andrew@31: snarefilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/03snare_bip.wav"; andrew@31: guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/04elec_bip.wav"; andrew@31: break; andrew@31: andrew@31: case 8: andrew@31: kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/02kick_bip.wav"; andrew@31: bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/01bass_bip.wav"; andrew@31: snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/03snare_bip.wav"; andrew@31: break; andrew@31: andrew@31: case 9: andrew@31: kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/02kick.wav"; andrew@31: bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/01bass.wav"; andrew@31: snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/03snare.wav"; andrew@31: break; andrew@31: andrew@33: case 10: andrew@33: kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/02Kick_bip.wav"; andrew@33: bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/01Bass.wav"; andrew@33: snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/03Snare_bip.wav"; andrew@33: guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/04Elec_SM57_bip.wav"; andrew@33: break; andrew@29: andrew@33: case 11: andrew@33: kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/02Kick_bip.wav"; andrew@33: bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/01Bass.wav"; andrew@33: snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/03Snare_bip.wav"; andrew@33: guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/04Elec_SM57_bip.wav"; andrew@33: break; andrew@33: andrew@33: case 12: andrew@33: kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/02Kick_bip.wav"; andrew@33: bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/01Bass.wav"; andrew@33: snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/03Snare_bip.wav"; andrew@33: guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/04Elec_SM57_bip.wav"; andrew@33: break; andrew@33: andrew@33: case 13: andrew@33: kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/02Kick_bip.wav"; andrew@33: bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/01Bass.wav"; andrew@33: snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/03Snare_bip.wav"; andrew@33: guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/04Elec_SM57_bip.wav"; andrew@33: break; andrew@33: andrew@29: andrew@23: } andrew@23: loadAudioTrack(kickfilename, 0); andrew@23: loadAudioTrack(bassfilename, 1); andrew@23: loadAudioTrack(snarefilename, 2); andrew@31: andrew@31: if (guitarfilename != NULL) andrew@31: loadAudioTrack(guitarfilename, 3); andrew@23: andrew@23: } andrew@23: andrew@23: void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){ andrew@23: //kick - track type 0 andrew@23: //bass - type 1 andrew@23: //snare type 2 andrew@23: if (channel >= 0 && channel <= 4){ andrew@23: loadedAudioPtr = new LoadedAudioHolder; andrew@23: loadedAudioPtr->loadAudioFile(name); andrew@23: loadedAudioFiles[channel] = *loadedAudioPtr; andrew@23: loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight); andrew@23: loadedAudioFiles[channel].setTrackType(channel); andrew@23: } andrew@23: } andrew@23: andrew@1: andrew@1: andrew@1: void RecordedMultitrackAudio::drawTracks(){ andrew@1: andrew@1: for (int i = 0;i < numberOfAudioTracks;i++){ andrew@1: loadedAudioFiles[i].draw(); andrew@1: } andrew@1: } andrew@1: andrew@1: andrew@1: void RecordedMultitrackAudio::updatePosition(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].updateToPlayPosition(); andrew@1: } andrew@1: andrew@9: void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){ andrew@9: for (int i = 0;i < numberOfAudioTracks;i++) andrew@9: loadedAudioFiles[i].updateToMillisPosition(millis); andrew@9: } andrew@2: andrew@1: void RecordedMultitrackAudio::switchScreens(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].switchScreens(); andrew@1: } andrew@1: andrew@1: andrew@1: void RecordedMultitrackAudio::togglePlay(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].togglePlay(); andrew@1: } andrew@1: andrew@1: void RecordedMultitrackAudio::stop(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].stop(); andrew@1: } andrew@1: andrew@1: andrew@1: void RecordedMultitrackAudio::printInfo(){ andrew@1: loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo(); andrew@1: loadedAudioFiles[0].printEvents(); andrew@1: } andrew@1: andrew@1: void RecordedMultitrackAudio::windowResized(const int& w, const int& h){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].windowResized(w, h); andrew@1: } andrew@1: andrew@1: void RecordedMultitrackAudio::zoomIn(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].fileLoader.zoomIn(); andrew@1: } andrew@1: andrew@1: void RecordedMultitrackAudio::zoomOut(){ andrew@1: for (int i = 0;i < numberOfAudioTracks;i++) andrew@1: loadedAudioFiles[i].fileLoader.zoomOut(); andrew@1: } andrew@1: andrew@1: