andrew@33
|
1 /*
|
andrew@33
|
2 * CannamMidiFileLoader.h
|
andrew@33
|
3 * midi-score-follower
|
andrew@33
|
4 *
|
andrew@33
|
5 * Created by Chris Cannam on 19/08/2011.
|
andrew@33
|
6 * Copyright 2011 QMUL. All rights reserved.
|
andrew@33
|
7 *
|
andrew@33
|
8 */
|
andrew@33
|
9
|
andrew@33
|
10 #ifndef CANNAM_MIDI_FILE_LOADER
|
andrew@33
|
11 #define CANNAM_MIDI_FILE_LOADER
|
andrew@33
|
12
|
andrew@33
|
13 #include "MIDIFileReader.h"
|
andrew@33
|
14 //#include "MIDIEvent.h"
|
andrew@33
|
15 #include "midiEventHolder.h"
|
andrew@33
|
16 using namespace MIDIConstants;
|
andrew@33
|
17
|
andrew@33
|
18 class CannamMidiFileLoader{
|
andrew@33
|
19
|
andrew@33
|
20 public:
|
andrew@33
|
21 CannamMidiFileLoader();
|
andrew@33
|
22
|
andrew@33
|
23 typedef std::vector<double> DoubleVector;
|
andrew@33
|
24
|
andrew@33
|
25 int loadFile(std::string& filename, midiEventHolder& myMidiEvents);
|
andrew@33
|
26
|
andrew@33
|
27 void createEventTiming( midiEventHolder& myMidiEvents);
|
andrew@33
|
28 void setTempoFromMidiValue(long tempo, midiEventHolder& myMidiEvents);
|
andrew@33
|
29 double firstNoteTime;
|
andrew@33
|
30 int firstTickTime;
|
andrew@33
|
31 bool chopBeginning;
|
andrew@34
|
32 void chopBeginningfromEvents(midiEventHolder& myMidiEvents);
|
andrew@33
|
33
|
andrew@33
|
34 typedef std::vector<int> IntVector;
|
andrew@33
|
35 IntVector v;
|
andrew@33
|
36 int noteOnIndex;
|
andrew@33
|
37
|
andrew@33
|
38 int ticksPerMeasure;
|
andrew@33
|
39 void newTimeSignature(int ticks, int numerator, int denominator, midiEventHolder& myMidiEvents);
|
andrew@33
|
40 void updateMeasureToTickPosition(int ticks, midiEventHolder& myMidiEvents);
|
andrew@33
|
41 bool printMidiInfo;
|
andrew@33
|
42 void printMeasuresSoFar(midiEventHolder& myMidiEvents);
|
andrew@33
|
43 void correctMeasuresTiming(midiEventHolder& myMidiEvents);
|
andrew@34
|
44 double fileDuration;
|
andrew@35
|
45 float beatsPerMeasure;
|
andrew@35
|
46 float numberOfBeatsAtLastPosition;
|
andrew@35
|
47 int lastBeatPosition;
|
andrew@35
|
48 double getBeatPositionForTickCount(long t, midiEventHolder& myMidiEvents);
|
andrew@35
|
49 void printUpToIndex(const int& index, midiEventHolder& midiEvents);
|
andrew@33
|
50 };
|
andrew@33
|
51 #endif |