Mercurial > hg > midi-score-follower
comparison src/CannamMidiFileLoader.cpp @ 3:de86d77f2612
added speed prior setting. needs some cleaning
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Fri, 19 Aug 2011 02:36:34 +0100 |
parents | 5581023e0de4 |
children | 4a8e6a6cd224 |
comparison
equal
deleted
inserted
replaced
2:5581023e0de4 | 3:de86d77f2612 |
---|---|
8 */ | 8 */ |
9 | 9 |
10 #include "MIDIFileReader.h" | 10 #include "MIDIFileReader.h" |
11 #include "CannamMidiFileLoader.h" | 11 #include "CannamMidiFileLoader.h" |
12 | 12 |
13 CannamMidiFileLoader::CannamMidiFileLoader(){ | |
14 chopBeginning = true; | |
15 } | |
16 | |
13 int CannamMidiFileLoader::loadFile(std::string& filename, midiEventHolder& myMidiEvents){ | 17 int CannamMidiFileLoader::loadFile(std::string& filename, midiEventHolder& myMidiEvents){ |
14 | 18 |
15 | 19 noteOnIndex = 0; |
16 myMidiEvents.clearAllEvents(); | 20 myMidiEvents.clearAllEvents(); |
17 | 21 |
18 //int main(int argc, char **argv) | 22 //int main(int argc, char **argv) |
19 //{ | 23 //{ |
20 // if (argc != 2) { | 24 // if (argc != 2) { |
146 cout << t << ": Note: channel " << ch | 150 cout << t << ": Note: channel " << ch |
147 << " duration " << j->getDuration() | 151 << " duration " << j->getDuration() |
148 << " pitch " << j->getPitch() | 152 << " pitch " << j->getPitch() |
149 << " velocity " << j->getVelocity() | 153 << " velocity " << j->getVelocity() |
150 << "event time " << myMidiEvents.getEventTimeMillis(t) << endl; | 154 << "event time " << myMidiEvents.getEventTimeMillis(t) << endl; |
155 | |
156 | |
157 if (noteOnIndex == 0){ | |
158 firstNoteTime = myMidiEvents.getEventTimeMillis(t); | |
159 firstTickTime = t; | |
160 } | |
161 | |
162 noteOnIndex++; | |
163 | |
151 v.clear(); | 164 v.clear(); |
152 v.push_back(t); | 165 |
166 if (!chopBeginning) | |
167 v.push_back(t); | |
168 else | |
169 v.push_back(t - firstTickTime); | |
170 | |
153 v.push_back(j->getPitch()); | 171 v.push_back(j->getPitch()); |
154 v.push_back(j->getVelocity()); | 172 v.push_back(j->getVelocity()); |
155 v.push_back(j->getDuration()); | 173 v.push_back(j->getDuration()); |
156 myMidiEvents.recordedNoteOnMatrix.push_back(v); | 174 myMidiEvents.recordedNoteOnMatrix.push_back(v); |
175 | |
176 if (!chopBeginning) | |
157 myMidiEvents.recordedEventTimes.push_back(myMidiEvents.getEventTimeMillis(t)); | 177 myMidiEvents.recordedEventTimes.push_back(myMidiEvents.getEventTimeMillis(t)); |
178 else { | |
179 myMidiEvents.recordedEventTimes.push_back(myMidiEvents.getEventTimeMillis(t) - firstNoteTime); | |
180 printf("chopping beginning %f \n", myMidiEvents.getEventTimeMillis(t) - firstNoteTime); | |
181 } | |
182 | |
158 break; | 183 break; |
159 | 184 |
160 case MIDI_POLY_AFTERTOUCH: | 185 case MIDI_POLY_AFTERTOUCH: |
161 cout << t << ": Polyphonic aftertouch: channel " << ch | 186 cout << t << ": Polyphonic aftertouch: channel " << ch |
162 << " pitch " << j->getPitch() | 187 << " pitch " << j->getPitch() |