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@41
|
19 int multitrackToLoad = 18;
|
andrew@36
|
20 setDifferentMultitracks(multitrackToLoad);//command to load this set of audio files - see below
|
andrew@26
|
21
|
andrew@31
|
22 //number 7 is problematic with memory
|
andrew@26
|
23
|
andrew@26
|
24 printf("AFTER LOADING: \n");
|
andrew@1
|
25 printInfo();
|
andrew@7
|
26
|
andrew@1
|
27
|
andrew@31
|
28 numberOfAudioTracks = 4;
|
andrew@26
|
29
|
andrew@1
|
30
|
andrew@1
|
31 }
|
andrew@1
|
32
|
andrew@23
|
33 void RecordedMultitrackAudio::setDifferentMultitracks(const int& setToLoad){
|
andrew@23
|
34 const char *kickfilename ;//= "../../../data/sound/LiveDues/kick_liveDues.wav";
|
andrew@23
|
35 const char *bassfilename ;//"../../../data/sound/LiveDues/bass_upsideLive.wav";
|
andrew@23
|
36 const char *snarefilename ;
|
andrew@31
|
37 const char *guitarfilename ;
|
andrew@23
|
38
|
andrew@23
|
39 switch (setToLoad) {
|
andrew@23
|
40 case 0:
|
andrew@23
|
41 kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav";
|
andrew@23
|
42 bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav";
|
andrew@23
|
43 snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav";
|
andrew@23
|
44 break;
|
andrew@23
|
45 case 1:
|
andrew@23
|
46 kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav";
|
andrew@23
|
47 bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav";
|
andrew@23
|
48 snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav";
|
andrew@26
|
49 break;
|
andrew@23
|
50 case 2:
|
andrew@23
|
51 kickfilename = "../../../data/sound/LiveIdiot2/02kick_bip.wav";
|
andrew@23
|
52 bassfilename = "../../../data/sound/LiveIdiot2/01bass_bip.wav";
|
andrew@23
|
53 snarefilename = "../../../data/sound/LiveIdiot2/03snare_bip.wav";
|
andrew@23
|
54 break;
|
andrew@23
|
55 case 3:
|
andrew@23
|
56 kickfilename = "../../../data/sound/UistLive1/02kick_bip.wav";
|
andrew@23
|
57 bassfilename = "../../../data/sound/UistLive1/01bass_bip.wav";
|
andrew@23
|
58 snarefilename = "../../../data/sound/UistLive1/03snare_bip.wav";
|
andrew@23
|
59 break;
|
andrew@28
|
60
|
andrew@28
|
61 case 4:
|
andrew@39
|
62 kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/02kick_bip.wav";
|
andrew@39
|
63 bassfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/01bass_bip.wav";
|
andrew@39
|
64 snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/03snare_bip.wav";
|
andrew@39
|
65 guitarfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeTwo/04guitar di_bip.wav";
|
andrew@28
|
66 break;
|
andrew@29
|
67 case 5:
|
andrew@31
|
68 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/02kick_bip.wav";
|
andrew@31
|
69 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/01bass_bip.wav";
|
andrew@31
|
70 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/03snare_bip.wav";
|
andrew@32
|
71 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take12/04elec_bip.wav";
|
andrew@29
|
72 break;
|
andrew@31
|
73 case 6:
|
andrew@31
|
74 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/02kick_bip.wav";
|
andrew@31
|
75 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/01bass_bip.wav";
|
andrew@31
|
76 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/03snare_bip.wav";
|
andrew@32
|
77 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take13/04elec_bip.wav";
|
andrew@31
|
78 break;
|
andrew@31
|
79
|
andrew@31
|
80 case 7:
|
andrew@31
|
81 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/02kick_bip.wav";
|
andrew@31
|
82 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/01bass_bip.wav";
|
andrew@31
|
83 snarefilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/03snare_bip.wav";
|
andrew@31
|
84 guitarfilename ="/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/Take14/04elec_bip.wav";
|
andrew@31
|
85 break;
|
andrew@31
|
86
|
andrew@31
|
87 case 8:
|
andrew@31
|
88 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/02kick_bip.wav";
|
andrew@31
|
89 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/01bass_bip.wav";
|
andrew@31
|
90 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine4/03snare_bip.wav";
|
andrew@31
|
91 break;
|
andrew@31
|
92
|
andrew@31
|
93 case 9:
|
andrew@31
|
94 kickfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/02kick.wav";
|
andrew@31
|
95 bassfilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/01bass.wav";
|
andrew@31
|
96 snarefilename = "/Users/andrew/Documents/work/Alignment/MultitrackMatch/tractorsAlign/DownLine5/03snare.wav";
|
andrew@31
|
97 break;
|
andrew@31
|
98
|
andrew@33
|
99 case 10:
|
andrew@33
|
100 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/02Kick_bip.wav";
|
andrew@33
|
101 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/01Bass.wav";
|
andrew@33
|
102 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/03Snare_bip.wav";
|
andrew@33
|
103 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take2/04Elec_SM57_bip.wav";
|
andrew@33
|
104 break;
|
andrew@29
|
105
|
andrew@33
|
106 case 11:
|
andrew@33
|
107 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/02Kick_bip.wav";
|
andrew@33
|
108 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/01Bass.wav";
|
andrew@33
|
109 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/03Snare_bip.wav";
|
andrew@33
|
110 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take3/04Elec_SM57_bip.wav";
|
andrew@33
|
111 break;
|
andrew@33
|
112
|
andrew@33
|
113 case 12:
|
andrew@33
|
114 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/02Kick_bip.wav";
|
andrew@33
|
115 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/01Bass.wav";
|
andrew@33
|
116 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/03Snare_bip.wav";
|
andrew@33
|
117 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take4/04Elec_SM57_bip.wav";
|
andrew@33
|
118 break;
|
andrew@33
|
119
|
andrew@33
|
120 case 13:
|
andrew@33
|
121 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/02Kick_bip.wav";
|
andrew@33
|
122 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/01Bass.wav";
|
andrew@33
|
123 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/03Snare_bip.wav";
|
andrew@36
|
124 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/MarbleArchMultitracks/Take6/04Elec_SM57_bip.wav";
|
andrew@33
|
125 break;
|
andrew@34
|
126
|
andrew@34
|
127
|
andrew@34
|
128 case 14:
|
andrew@35
|
129 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneShorter/02Kick_bip.wav";
|
andrew@35
|
130 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneShorter/01Bass.wav";
|
andrew@35
|
131 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneShorter/03Snare_bip.wav";
|
andrew@35
|
132 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneShorter/04Elec_SM57_bip.wav";
|
andrew@34
|
133 break;
|
andrew@34
|
134
|
andrew@34
|
135 case 15:
|
andrew@35
|
136 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoShorter/02Kick_bip.wav";
|
andrew@35
|
137 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoShorter/01Bass.wav";
|
andrew@35
|
138 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoShorter/03Snare_bip.wav";
|
andrew@35
|
139 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoShorter/04Elec_SM57_bip.wav";
|
andrew@36
|
140 break;
|
andrew@36
|
141
|
andrew@36
|
142 case 16:
|
andrew@36
|
143 kickfilename = "/Volumes/Supersaurus/SonOfMan/FollowYourLeaders/FollowYourLeaders/Bounces/FollowMultitracks/Follow_023_D/02Kick_D112_bip.wav";
|
andrew@39
|
144 // bassfilename = "/Volumes/Supersaurus/SonOfMan/FollowYourLeaders/FollowYourLeaders/Bounces/FollowMultitracks/Follow_023_D/01Bass.wav";
|
andrew@39
|
145 snarefilename = "/Volumes/Supersaurus/SonOfMan/FollowYourLeaders/FollowYourLeaders/Bounces/FollowMultitracks/Follow_023_D/03Snare_Top_bip.wav";
|
andrew@39
|
146 guitarfilename = "/Volumes/Supersaurus/SonOfMan/FollowYourLeaders/FollowYourLeaders/Bounces/FollowMultitracks/Follow_023_D/04Elec_SM57_bip.wav";
|
andrew@39
|
147
|
andrew@36
|
148 break;
|
andrew@36
|
149
|
andrew@39
|
150 case 17:
|
andrew@39
|
151 kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeThree/02kick_bip.wav";
|
andrew@39
|
152 bassfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeThree/01bass_bip.wav";
|
andrew@39
|
153 snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeThree/03snare_bip.wav";
|
andrew@39
|
154 guitarfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsIdiotDance/tractorsSetToRecord2/Bounces/TakeThree/04guitar di_bip.wav";
|
andrew@39
|
155 break;
|
andrew@36
|
156
|
andrew@41
|
157 case 18:
|
andrew@42
|
158 bassfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/01bass di_bip.wav";
|
andrew@42
|
159 kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/02kick_bip.wav";
|
andrew@42
|
160 snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/03snare bottom_bip.wav";
|
andrew@41
|
161 guitarfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/04guitar di_bip.wav";
|
andrew@42
|
162 break;
|
andrew@42
|
163
|
andrew@36
|
164
|
andrew@29
|
165
|
andrew@23
|
166 }
|
andrew@39
|
167 if (kickfilename != NULL)
|
andrew@23
|
168 loadAudioTrack(kickfilename, 0);
|
andrew@39
|
169
|
andrew@39
|
170 if (bassfilename != NULL){
|
andrew@39
|
171 printf("BASSfilename: %s\n", bassfilename);
|
andrew@39
|
172 loadAudioTrack(bassfilename, 1);
|
andrew@39
|
173 }
|
andrew@39
|
174
|
andrew@39
|
175 if (snarefilename != NULL)
|
andrew@23
|
176 loadAudioTrack(snarefilename, 2);
|
andrew@31
|
177
|
andrew@31
|
178 if (guitarfilename != NULL)
|
andrew@31
|
179 loadAudioTrack(guitarfilename, 3);
|
andrew@23
|
180
|
andrew@23
|
181 }
|
andrew@23
|
182
|
andrew@23
|
183 void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){
|
andrew@23
|
184 //kick - track type 0
|
andrew@23
|
185 //bass - type 1
|
andrew@23
|
186 //snare type 2
|
andrew@23
|
187 if (channel >= 0 && channel <= 4){
|
andrew@23
|
188 loadedAudioPtr = new LoadedAudioHolder;
|
andrew@38
|
189 //set tracktype before we do analysis
|
andrew@38
|
190 //so we dont do unnecessary chroma and pitch calculations
|
andrew@38
|
191 loadedAudioPtr->setTrackType(channel);
|
andrew@23
|
192 loadedAudioPtr->loadAudioFile(name);
|
andrew@38
|
193
|
andrew@23
|
194 loadedAudioFiles[channel] = *loadedAudioPtr;
|
andrew@23
|
195 loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight);
|
andrew@38
|
196 //loadedAudioFiles[channel].setTrackType(channel);
|
andrew@23
|
197 }
|
andrew@23
|
198 }
|
andrew@23
|
199
|
andrew@1
|
200
|
andrew@1
|
201
|
andrew@1
|
202 void RecordedMultitrackAudio::drawTracks(){
|
andrew@1
|
203
|
andrew@1
|
204 for (int i = 0;i < numberOfAudioTracks;i++){
|
andrew@1
|
205 loadedAudioFiles[i].draw();
|
andrew@1
|
206 }
|
andrew@1
|
207 }
|
andrew@1
|
208
|
andrew@1
|
209
|
andrew@1
|
210 void RecordedMultitrackAudio::updatePosition(){
|
andrew@1
|
211 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
212 loadedAudioFiles[i].updateToPlayPosition();
|
andrew@1
|
213 }
|
andrew@1
|
214
|
andrew@9
|
215 void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
|
andrew@9
|
216 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@9
|
217 loadedAudioFiles[i].updateToMillisPosition(millis);
|
andrew@9
|
218 }
|
andrew@2
|
219
|
andrew@1
|
220 void RecordedMultitrackAudio::switchScreens(){
|
andrew@1
|
221 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
222 loadedAudioFiles[i].switchScreens();
|
andrew@1
|
223 }
|
andrew@1
|
224
|
andrew@1
|
225
|
andrew@1
|
226 void RecordedMultitrackAudio::togglePlay(){
|
andrew@1
|
227 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
228 loadedAudioFiles[i].togglePlay();
|
andrew@1
|
229 }
|
andrew@1
|
230
|
andrew@1
|
231 void RecordedMultitrackAudio::stop(){
|
andrew@1
|
232 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
233 loadedAudioFiles[i].stop();
|
andrew@1
|
234 }
|
andrew@1
|
235
|
andrew@1
|
236
|
andrew@1
|
237 void RecordedMultitrackAudio::printInfo(){
|
andrew@1
|
238 loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
|
andrew@1
|
239 loadedAudioFiles[0].printEvents();
|
andrew@1
|
240 }
|
andrew@1
|
241
|
andrew@1
|
242 void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
|
andrew@1
|
243 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
244 loadedAudioFiles[i].windowResized(w, h);
|
andrew@1
|
245 }
|
andrew@1
|
246
|
andrew@1
|
247 void RecordedMultitrackAudio::zoomIn(){
|
andrew@1
|
248 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
249 loadedAudioFiles[i].fileLoader.zoomIn();
|
andrew@1
|
250 }
|
andrew@1
|
251
|
andrew@1
|
252 void RecordedMultitrackAudio::zoomOut(){
|
andrew@1
|
253 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
254 loadedAudioFiles[i].fileLoader.zoomOut();
|
andrew@1
|
255 }
|
andrew@1
|
256
|
andrew@1
|
257
|