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@34
|
19 setDifferentMultitracks(15);//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@34
|
124
|
andrew@34
|
125
|
andrew@34
|
126 case 14:
|
andrew@34
|
127 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneFull/02Kick_bip.wav";
|
andrew@34
|
128 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneFull/01Bass.wav";
|
andrew@34
|
129 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneFull/03Snare_bip.wav";
|
andrew@34
|
130 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeOneFull/04Elec_SM57_bip.wav";
|
andrew@34
|
131 break;
|
andrew@34
|
132
|
andrew@34
|
133 case 15:
|
andrew@34
|
134 kickfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoFull/02Kick_bip.wav";
|
andrew@34
|
135 bassfilename = "/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoFull/01Bass.wav";
|
andrew@34
|
136 snarefilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoFull/03Snare_bip.wav";
|
andrew@34
|
137 guitarfilename ="/Volumes/Supersaurus/Gronk/Gronkn/Bounces/StationGateMultitracks/TakeTwoFull/04Elec_SM57_bip.wav";
|
andrew@34
|
138 break;
|
andrew@29
|
139
|
andrew@23
|
140 }
|
andrew@23
|
141 loadAudioTrack(kickfilename, 0);
|
andrew@23
|
142 loadAudioTrack(bassfilename, 1);
|
andrew@23
|
143 loadAudioTrack(snarefilename, 2);
|
andrew@31
|
144
|
andrew@31
|
145 if (guitarfilename != NULL)
|
andrew@31
|
146 loadAudioTrack(guitarfilename, 3);
|
andrew@23
|
147
|
andrew@23
|
148 }
|
andrew@23
|
149
|
andrew@23
|
150 void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){
|
andrew@23
|
151 //kick - track type 0
|
andrew@23
|
152 //bass - type 1
|
andrew@23
|
153 //snare type 2
|
andrew@23
|
154 if (channel >= 0 && channel <= 4){
|
andrew@23
|
155 loadedAudioPtr = new LoadedAudioHolder;
|
andrew@23
|
156 loadedAudioPtr->loadAudioFile(name);
|
andrew@23
|
157 loadedAudioFiles[channel] = *loadedAudioPtr;
|
andrew@23
|
158 loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight);
|
andrew@23
|
159 loadedAudioFiles[channel].setTrackType(channel);
|
andrew@23
|
160 }
|
andrew@23
|
161 }
|
andrew@23
|
162
|
andrew@1
|
163
|
andrew@1
|
164
|
andrew@1
|
165 void RecordedMultitrackAudio::drawTracks(){
|
andrew@1
|
166
|
andrew@1
|
167 for (int i = 0;i < numberOfAudioTracks;i++){
|
andrew@1
|
168 loadedAudioFiles[i].draw();
|
andrew@1
|
169 }
|
andrew@1
|
170 }
|
andrew@1
|
171
|
andrew@1
|
172
|
andrew@1
|
173 void RecordedMultitrackAudio::updatePosition(){
|
andrew@1
|
174 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
175 loadedAudioFiles[i].updateToPlayPosition();
|
andrew@1
|
176 }
|
andrew@1
|
177
|
andrew@9
|
178 void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
|
andrew@9
|
179 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@9
|
180 loadedAudioFiles[i].updateToMillisPosition(millis);
|
andrew@9
|
181 }
|
andrew@2
|
182
|
andrew@1
|
183 void RecordedMultitrackAudio::switchScreens(){
|
andrew@1
|
184 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
185 loadedAudioFiles[i].switchScreens();
|
andrew@1
|
186 }
|
andrew@1
|
187
|
andrew@1
|
188
|
andrew@1
|
189 void RecordedMultitrackAudio::togglePlay(){
|
andrew@1
|
190 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
191 loadedAudioFiles[i].togglePlay();
|
andrew@1
|
192 }
|
andrew@1
|
193
|
andrew@1
|
194 void RecordedMultitrackAudio::stop(){
|
andrew@1
|
195 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
196 loadedAudioFiles[i].stop();
|
andrew@1
|
197 }
|
andrew@1
|
198
|
andrew@1
|
199
|
andrew@1
|
200 void RecordedMultitrackAudio::printInfo(){
|
andrew@1
|
201 loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
|
andrew@1
|
202 loadedAudioFiles[0].printEvents();
|
andrew@1
|
203 }
|
andrew@1
|
204
|
andrew@1
|
205 void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
|
andrew@1
|
206 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
207 loadedAudioFiles[i].windowResized(w, h);
|
andrew@1
|
208 }
|
andrew@1
|
209
|
andrew@1
|
210 void RecordedMultitrackAudio::zoomIn(){
|
andrew@1
|
211 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
212 loadedAudioFiles[i].fileLoader.zoomIn();
|
andrew@1
|
213 }
|
andrew@1
|
214
|
andrew@1
|
215 void RecordedMultitrackAudio::zoomOut(){
|
andrew@1
|
216 for (int i = 0;i < numberOfAudioTracks;i++)
|
andrew@1
|
217 loadedAudioFiles[i].fileLoader.zoomOut();
|
andrew@1
|
218 }
|
andrew@1
|
219
|
andrew@1
|
220
|