andrew@33: /* andrew@33: * CannamMidiFileLoader.h andrew@33: * midi-score-follower andrew@33: * andrew@33: * Created by Chris Cannam on 19/08/2011. andrew@33: * Copyright 2011 QMUL. All rights reserved. andrew@33: * andrew@33: */ andrew@33: andrew@33: #ifndef CANNAM_MIDI_FILE_LOADER andrew@33: #define CANNAM_MIDI_FILE_LOADER andrew@33: andrew@33: #include "MIDIFileReader.h" andrew@33: //#include "MIDIEvent.h" andrew@33: #include "midiEventHolder.h" andrew@33: using namespace MIDIConstants; andrew@33: andrew@33: class CannamMidiFileLoader{ andrew@33: andrew@33: public: andrew@33: CannamMidiFileLoader(); andrew@33: andrew@33: typedef std::vector DoubleVector; andrew@33: andrew@33: int loadFile(std::string& filename, midiEventHolder& myMidiEvents); andrew@33: andrew@33: void createEventTiming( midiEventHolder& myMidiEvents); andrew@33: void setTempoFromMidiValue(long tempo, midiEventHolder& myMidiEvents); andrew@33: double firstNoteTime; andrew@33: int firstTickTime; andrew@33: bool chopBeginning; andrew@34: void chopBeginningfromEvents(midiEventHolder& myMidiEvents); andrew@33: andrew@33: typedef std::vector IntVector; andrew@33: IntVector v; andrew@33: int noteOnIndex; andrew@33: andrew@33: int ticksPerMeasure; andrew@33: void newTimeSignature(int ticks, int numerator, int denominator, midiEventHolder& myMidiEvents); andrew@33: void updateMeasureToTickPosition(int ticks, midiEventHolder& myMidiEvents); andrew@33: bool printMidiInfo; andrew@33: void printMeasuresSoFar(midiEventHolder& myMidiEvents); andrew@33: void correctMeasuresTiming(midiEventHolder& myMidiEvents); andrew@34: double fileDuration; andrew@35: float beatsPerMeasure; andrew@35: float numberOfBeatsAtLastPosition; andrew@35: int lastBeatPosition; andrew@35: double getBeatPositionForTickCount(long t, midiEventHolder& myMidiEvents); andrew@35: void printUpToIndex(const int& index, midiEventHolder& midiEvents); andrew@33: }; andrew@33: #endif