annotate src/RecordedMultitrackAudio.cpp @ 10:cbadb9d05d29

Using timestamps for the scrolling alignment time
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Sat, 04 Feb 2012 19:59:27 +0000
parents bc62266af280
children 780def3a1f36
rev   line source
andrew@1 1 /*
andrew@1 2 * RecordedMultitrackAudio.cpp
andrew@1 3 * MultipleAudioMathcher
andrew@1 4 *
andrew@1 5 * Created by Andrew on 31/01/2012.
andrew@1 6 * Copyright 2012 QMUL. All rights reserved.
andrew@1 7 *
andrew@1 8 */
andrew@1 9
andrew@1 10 #include "RecordedMultitrackAudio.h"
andrew@1 11
andrew@1 12
andrew@1 13 void RecordedMultitrackAudio::loadTestAudio(){
andrew@1 14
andrew@1 15
andrew@10 16 // const char *kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav";
andrew@10 17 // const char *bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav";
andrew@10 18 // const char *snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav";
andrew@10 19
andrew@10 20 const char *kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav";
andrew@10 21 const char *bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav";
andrew@10 22 const char *snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav";
andrew@10 23
andrew@10 24
andrew@10 25
andrew@6 26 //"../../../data/sound/basicClavScale.wav";
andrew@1 27
andrew@1 28 //LoadedAudioHolder lah;
andrew@1 29 // lah.loadAudioFile(infilename);
andrew@1 30 // loadedAudioFiles.push_back(lah);
andrew@1 31
andrew@7 32 trackScreenHeight = 0.15;
andrew@1 33 //Take care here - we need a pointer to create new instance
andrew@1 34 //but not then delete the instance before the vector of all audio tracks has been used
andrew@1 35 //the above code using lah has problem that it deletes objects once out of the scope of testApp.setup()
andrew@1 36 //when lah is in theory no longer used - something like that possible? - at least pointers to onset detection seem deleted
andrew@2 37 loadedAudioPtr = new LoadedAudioHolder();
andrew@10 38 loadedAudioPtr->loadAudioFile(kickfilename);
andrew@1 39 // loadedAudioFiles.push_back(*loadedAudioPtr);
andrew@1 40 loadedAudioFiles[0] = *loadedAudioPtr;
andrew@1 41
andrew@7 42 loadedAudioFiles[0].fileLoader.onsetDetect.window.setToRelativeSize(0, 0.0, 1, trackScreenHeight);
andrew@2 43 loadedAudioFiles[0].setTrackType(0);// fileLoader.onsetDetect.trackType = 0;
andrew@1 44
andrew@1 45 // printf("Loaded audio %i\n", (int)numberOfAudioTracks);
andrew@1 46 printf("loaded max val is %f\n", loadedAudioFiles[0].fileLoader.onsetDetect.onsetDetector.maximumDetectionValue);
andrew@1 47
andrew@1 48 printf("BEFORE LOADING 1\n");
andrew@1 49 printInfo();
andrew@1 50
andrew@1 51 loadedAudioPtr = new LoadedAudioHolder;
andrew@10 52 loadedAudioPtr->loadAudioFile(bassfilename);
andrew@1 53 // loadedAudioFiles.push_back(*loadedAudioPtr);
andrew@1 54 loadedAudioFiles[1] = *loadedAudioPtr;
andrew@7 55 loadedAudioFiles[1].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight, 1, trackScreenHeight);
andrew@2 56 loadedAudioFiles[1].setTrackType(1);
andrew@7 57
andrew@10 58
andrew@7 59
andrew@7 60 loadedAudioPtr = new LoadedAudioHolder;
andrew@10 61 loadedAudioPtr->loadAudioFile(snarefilename);
andrew@7 62 // loadedAudioFiles.push_back(*loadedAudioPtr);
andrew@7 63 loadedAudioFiles[2] = *loadedAudioPtr;
andrew@7 64 loadedAudioFiles[2].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*2, 1, trackScreenHeight);
andrew@7 65 loadedAudioFiles[2].setTrackType(2);
andrew@7 66
andrew@1 67
andrew@1 68 printf("AFTER LOADING 1\n");
andrew@1 69 printInfo();
andrew@1 70
andrew@7 71 numberOfAudioTracks = 3;
andrew@1 72
andrew@1 73
andrew@1 74 }
andrew@1 75
andrew@1 76
andrew@1 77
andrew@1 78 void RecordedMultitrackAudio::drawTracks(){
andrew@1 79
andrew@1 80 for (int i = 0;i < numberOfAudioTracks;i++){
andrew@1 81 loadedAudioFiles[i].draw();
andrew@1 82 }
andrew@1 83 }
andrew@1 84
andrew@1 85
andrew@1 86 void RecordedMultitrackAudio::updatePosition(){
andrew@1 87 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 88 loadedAudioFiles[i].updateToPlayPosition();
andrew@1 89 }
andrew@1 90
andrew@9 91 void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
andrew@9 92 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@9 93 loadedAudioFiles[i].updateToMillisPosition(millis);
andrew@9 94 }
andrew@2 95
andrew@1 96 void RecordedMultitrackAudio::switchScreens(){
andrew@1 97 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 98 loadedAudioFiles[i].switchScreens();
andrew@1 99 }
andrew@1 100
andrew@1 101
andrew@1 102 void RecordedMultitrackAudio::togglePlay(){
andrew@1 103 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 104 loadedAudioFiles[i].togglePlay();
andrew@1 105 }
andrew@1 106
andrew@1 107 void RecordedMultitrackAudio::stop(){
andrew@1 108 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 109 loadedAudioFiles[i].stop();
andrew@1 110 }
andrew@1 111
andrew@1 112
andrew@1 113 void RecordedMultitrackAudio::printInfo(){
andrew@1 114 loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
andrew@1 115 loadedAudioFiles[0].printEvents();
andrew@1 116 }
andrew@1 117
andrew@1 118 void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
andrew@1 119 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 120 loadedAudioFiles[i].windowResized(w, h);
andrew@1 121 }
andrew@1 122
andrew@1 123 void RecordedMultitrackAudio::zoomIn(){
andrew@1 124 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 125 loadedAudioFiles[i].fileLoader.zoomIn();
andrew@1 126 }
andrew@1 127
andrew@1 128 void RecordedMultitrackAudio::zoomOut(){
andrew@1 129 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 130 loadedAudioFiles[i].fileLoader.zoomOut();
andrew@1 131 }
andrew@1 132
andrew@1 133