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@26: andrew@26: andrew@29: setDifferentMultitracks(5);//command to load this set of audio files - see below andrew@26: andrew@26: printf("AFTER LOADING: \n"); andrew@1: printInfo(); andrew@7: andrew@1: andrew@7: numberOfAudioTracks = 3; 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@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@29: kickfilename = "/Volumes/Supersaurus/Andrew_tractor_firstBack/tractorsDemo/Bounces/Take14/kick_bip.wav"; andrew@29: bassfilename = "/Volumes/Supersaurus/Andrew_tractor_firstBack/tractorsDemo/Bounces/Take14/bass_bip.wav"; andrew@29: snarefilename = "/Volumes/Supersaurus/Andrew_tractor_firstBack/tractorsDemo/Bounces/Take14/snare_bip.wav"; andrew@29: break; andrew@29: andrew@29: andrew@23: } andrew@23: loadAudioTrack(kickfilename, 0); andrew@23: loadAudioTrack(bassfilename, 1); andrew@23: loadAudioTrack(snarefilename, 2); 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: