annotate src/RecordedMultitrackAudio.cpp @ 33:ca40d52d9998

Improving patch for playing files
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Mon, 02 Apr 2012 18:47:25 +0100
parents 4be22a1a0e24
children 0d52ba6844b9
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@26 14
andrew@7 15 trackScreenHeight = 0.15;
andrew@26 16
andrew@1 17 printf("loaded max val is %f\n", loadedAudioFiles[0].fileLoader.onsetDetect.onsetDetector.maximumDetectionValue);
andrew@1 18
andrew@33 19 setDifferentMultitracks(13);//command to load this set of audio files - see below
andrew@26 20
andrew@31 21 //number 7 is problematic with memory
andrew@26 22
andrew@26 23 printf("AFTER LOADING: \n");
andrew@1 24 printInfo();
andrew@7 25
andrew@1 26
andrew@31 27 numberOfAudioTracks = 4;
andrew@26 28
andrew@1 29
andrew@1 30 }
andrew@1 31
andrew@23 32 void RecordedMultitrackAudio::setDifferentMultitracks(const int& setToLoad){
andrew@23 33 const char *kickfilename ;//= "../../../data/sound/LiveDues/kick_liveDues.wav";
andrew@23 34 const char *bassfilename ;//"../../../data/sound/LiveDues/bass_upsideLive.wav";
andrew@23 35 const char *snarefilename ;
andrew@31 36 const char *guitarfilename ;
andrew@23 37
andrew@23 38 switch (setToLoad) {
andrew@23 39 case 0:
andrew@23 40 kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav";
andrew@23 41 bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav";
andrew@23 42 snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav";
andrew@23 43 break;
andrew@23 44 case 1:
andrew@23 45 kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav";
andrew@23 46 bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav";
andrew@23 47 snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav";
andrew@26 48 break;
andrew@23 49 case 2:
andrew@23 50 kickfilename = "../../../data/sound/LiveIdiot2/02kick_bip.wav";
andrew@23 51 bassfilename = "../../../data/sound/LiveIdiot2/01bass_bip.wav";
andrew@23 52 snarefilename = "../../../data/sound/LiveIdiot2/03snare_bip.wav";
andrew@23 53 break;
andrew@23 54 case 3:
andrew@23 55 kickfilename = "../../../data/sound/UistLive1/02kick_bip.wav";
andrew@23 56 bassfilename = "../../../data/sound/UistLive1/01bass_bip.wav";
andrew@23 57 snarefilename = "../../../data/sound/UistLive1/03snare_bip.wav";
andrew@23 58 break;
andrew@28 59
andrew@28 60 case 4:
andrew@28 61 kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/kick d112_bip.wav";
andrew@28 62 bassfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/bass di_bip.wav";
andrew@28 63 snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/snare_bip.wav";
andrew@28 64 break;
andrew@29 65 case 5:
andrew@31 66 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/02kick_bip.wav";
andrew@31 67 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/01bass_bip.wav";
andrew@31 68 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/03snare_bip.wav";
andrew@32 69 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/04elec_bip.wav";
andrew@29 70 break;
andrew@31 71 case 6:
andrew@31 72 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/02kick_bip.wav";
andrew@31 73 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/01bass_bip.wav";
andrew@31 74 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/03snare_bip.wav";
andrew@32 75 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/04elec_bip.wav";
andrew@31 76 break;
andrew@31 77
andrew@31 78 case 7:
andrew@31 79 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/02kick_bip.wav";
andrew@31 80 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/01bass_bip.wav";
andrew@31 81 snarefilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/03snare_bip.wav";
andrew@31 82 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/04elec_bip.wav";
andrew@31 83 break;
andrew@31 84
andrew@31 85 case 8:
andrew@31 86 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/02kick_bip.wav";
andrew@31 87 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/01bass_bip.wav";
andrew@31 88 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/03snare_bip.wav";
andrew@31 89 break;
andrew@31 90
andrew@31 91 case 9:
andrew@31 92 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/02kick.wav";
andrew@31 93 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/01bass.wav";
andrew@31 94 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/03snare.wav";
andrew@31 95 break;
andrew@31 96
andrew@33 97 case 10:
andrew@33 98 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/02Kick_bip.wav";
andrew@33 99 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/01Bass.wav";
andrew@33 100 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/03Snare_bip.wav";
andrew@33 101 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/04Elec_SM57_bip.wav";
andrew@33 102 break;
andrew@29 103
andrew@33 104 case 11:
andrew@33 105 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/02Kick_bip.wav";
andrew@33 106 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/01Bass.wav";
andrew@33 107 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/03Snare_bip.wav";
andrew@33 108 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/04Elec_SM57_bip.wav";
andrew@33 109 break;
andrew@33 110
andrew@33 111 case 12:
andrew@33 112 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/02Kick_bip.wav";
andrew@33 113 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/01Bass.wav";
andrew@33 114 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/03Snare_bip.wav";
andrew@33 115 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/04Elec_SM57_bip.wav";
andrew@33 116 break;
andrew@33 117
andrew@33 118 case 13:
andrew@33 119 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/02Kick_bip.wav";
andrew@33 120 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/01Bass.wav";
andrew@33 121 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/03Snare_bip.wav";
andrew@33 122 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/04Elec_SM57_bip.wav";
andrew@33 123 break;
andrew@33 124
andrew@29 125
andrew@23 126 }
andrew@23 127 loadAudioTrack(kickfilename, 0);
andrew@23 128 loadAudioTrack(bassfilename, 1);
andrew@23 129 loadAudioTrack(snarefilename, 2);
andrew@31 130
andrew@31 131 if (guitarfilename != NULL)
andrew@31 132 loadAudioTrack(guitarfilename, 3);
andrew@23 133
andrew@23 134 }
andrew@23 135
andrew@23 136 void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){
andrew@23 137 //kick - track type 0
andrew@23 138 //bass - type 1
andrew@23 139 //snare type 2
andrew@23 140 if (channel >= 0 && channel <= 4){
andrew@23 141 loadedAudioPtr = new LoadedAudioHolder;
andrew@23 142 loadedAudioPtr->loadAudioFile(name);
andrew@23 143 loadedAudioFiles[channel] = *loadedAudioPtr;
andrew@23 144 loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight);
andrew@23 145 loadedAudioFiles[channel].setTrackType(channel);
andrew@23 146 }
andrew@23 147 }
andrew@23 148
andrew@1 149
andrew@1 150
andrew@1 151 void RecordedMultitrackAudio::drawTracks(){
andrew@1 152
andrew@1 153 for (int i = 0;i < numberOfAudioTracks;i++){
andrew@1 154 loadedAudioFiles[i].draw();
andrew@1 155 }
andrew@1 156 }
andrew@1 157
andrew@1 158
andrew@1 159 void RecordedMultitrackAudio::updatePosition(){
andrew@1 160 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 161 loadedAudioFiles[i].updateToPlayPosition();
andrew@1 162 }
andrew@1 163
andrew@9 164 void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
andrew@9 165 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@9 166 loadedAudioFiles[i].updateToMillisPosition(millis);
andrew@9 167 }
andrew@2 168
andrew@1 169 void RecordedMultitrackAudio::switchScreens(){
andrew@1 170 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 171 loadedAudioFiles[i].switchScreens();
andrew@1 172 }
andrew@1 173
andrew@1 174
andrew@1 175 void RecordedMultitrackAudio::togglePlay(){
andrew@1 176 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 177 loadedAudioFiles[i].togglePlay();
andrew@1 178 }
andrew@1 179
andrew@1 180 void RecordedMultitrackAudio::stop(){
andrew@1 181 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 182 loadedAudioFiles[i].stop();
andrew@1 183 }
andrew@1 184
andrew@1 185
andrew@1 186 void RecordedMultitrackAudio::printInfo(){
andrew@1 187 loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
andrew@1 188 loadedAudioFiles[0].printEvents();
andrew@1 189 }
andrew@1 190
andrew@1 191 void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
andrew@1 192 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 193 loadedAudioFiles[i].windowResized(w, h);
andrew@1 194 }
andrew@1 195
andrew@1 196 void RecordedMultitrackAudio::zoomIn(){
andrew@1 197 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 198 loadedAudioFiles[i].fileLoader.zoomIn();
andrew@1 199 }
andrew@1 200
andrew@1 201 void RecordedMultitrackAudio::zoomOut(){
andrew@1 202 for (int i = 0;i < numberOfAudioTracks;i++)
andrew@1 203 loadedAudioFiles[i].fileLoader.zoomOut();
andrew@1 204 }
andrew@1 205
andrew@1 206