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@41
|
158 kickfilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/01bass di_bip.wav";
|
andrew@41
|
159 snarefilename = "/Volumes/Supersaurus/TractorsAlbum/tractorsDiamondWhite/tractorsDiamondWhite/Bounces/diamondWhiteMultiTakeTwo/02kick_bip.wav";
|
andrew@41
|
160 bassfilename = "/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@36
|
162
|
andrew@41
|
163 break;
|
andrew@29
|
164
|
andrew@23
|
165 }
|
andrew@39
|
166 if (kickfilename != NULL)
|
andrew@23
|
167 loadAudioTrack(kickfilename, 0);
|
andrew@39
|
168
|
andrew@39
|
169 if (bassfilename != NULL){
|
andrew@39
|
170 printf("BASSfilename: %s\n", bassfilename);
|
andrew@39
|
171 loadAudioTrack(bassfilename, 1);
|
andrew@39
|
172 }
|
andrew@39
|
173
|
andrew@39
|
174 if (snarefilename != NULL)
|
andrew@23
|
175 loadAudioTrack(snarefilename, 2);
|
andrew@31
|
176
|
andrew@31
|
177 if (guitarfilename != NULL)
|
andrew@31
|
178 loadAudioTrack(guitarfilename, 3);
|
andrew@23
|
179
|
andrew@23
|
180 }
|
andrew@23
|
181
|
andrew@23
|
182 void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){
|
andrew@23
|
183 //kick - track type 0
|
andrew@23
|
184 //bass - type 1
|
andrew@23
|
185 //snare type 2
|
andrew@23
|
186 if (channel >= 0 && channel <= 4){
|
andrew@23
|
187 loadedAudioPtr = new LoadedAudioHolder;
|
andrew@38
|
188 //set tracktype before we do analysis
|
andrew@38
|
189 //so we dont do unnecessary chroma and pitch calculations
|
andrew@38
|
190 loadedAudioPtr->setTrackType(channel);
|
andrew@23
|
191 loadedAudioPtr->loadAudioFile(name);
|
andrew@38
|
192
|
andrew@23
|
193 loadedAudioFiles[channel] = *loadedAudioPtr;
|
andrew@23
|
194 loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight);
|
andrew@38
|
195 //loadedAudioFiles[channel].setTrackType(channel);
|
andrew@23
|
196 }
|
andrew@23
|
197 }
|
andrew@23
|
198
|
andrew@1
|
199
|
andrew@1
|
200
|
andrew@1
|
201 void RecordedMultitrackAudio::drawTracks(){
|
andrew@1
|
202
|
andrew@1
|
203 for (int i = 0;i < numberOfAudioTracks;i++){
|
andrew@1
|
204 loadedAudioFiles[i].draw();
|
andrew@1
|
205 }
|
andrew@1
|
206 }
|
andrew@1
|
207
|
andrew@1
|
208
|
andrew@1
|
209 void RecordedMultitrackAudio::updatePosition(){
|
andrew@1
|
210 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
211 loadedAudioFiles[i].updateToPlayPosition();
|
andrew@1
|
212 }
|
andrew@1
|
213
|
andrew@9
|
214 void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
|
andrew@9
|
215 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@9
|
216 loadedAudioFiles[i].updateToMillisPosition(millis);
|
andrew@9
|
217 }
|
andrew@2
|
218
|
andrew@1
|
219 void RecordedMultitrackAudio::switchScreens(){
|
andrew@1
|
220 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
221 loadedAudioFiles[i].switchScreens();
|
andrew@1
|
222 }
|
andrew@1
|
223
|
andrew@1
|
224
|
andrew@1
|
225 void RecordedMultitrackAudio::togglePlay(){
|
andrew@1
|
226 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
227 loadedAudioFiles[i].togglePlay();
|
andrew@1
|
228 }
|
andrew@1
|
229
|
andrew@1
|
230 void RecordedMultitrackAudio::stop(){
|
andrew@1
|
231 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
232 loadedAudioFiles[i].stop();
|
andrew@1
|
233 }
|
andrew@1
|
234
|
andrew@1
|
235
|
andrew@1
|
236 void RecordedMultitrackAudio::printInfo(){
|
andrew@1
|
237 loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
|
andrew@1
|
238 loadedAudioFiles[0].printEvents();
|
andrew@1
|
239 }
|
andrew@1
|
240
|
andrew@1
|
241 void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
|
andrew@1
|
242 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
243 loadedAudioFiles[i].windowResized(w, h);
|
andrew@1
|
244 }
|
andrew@1
|
245
|
andrew@1
|
246 void RecordedMultitrackAudio::zoomIn(){
|
andrew@1
|
247 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
248 loadedAudioFiles[i].fileLoader.zoomIn();
|
andrew@1
|
249 }
|
andrew@1
|
250
|
andrew@1
|
251 void RecordedMultitrackAudio::zoomOut(){
|
andrew@1
|
252 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
253 loadedAudioFiles[i].fileLoader.zoomOut();
|
andrew@1
|
254 }
|
andrew@1
|
255
|
andrew@1
|
256
|