view jnmr/CannamMidiFileLoader.h @ 52:13194a9dca77 tip

Added exporting of image and text data
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 17 Jul 2012 22:13:10 +0100
parents 6cd3e0075adf
children
line wrap: on
line source
/*
 *  CannamMidiFileLoader.h
 *  midi-score-follower
 *
 *  Created by Chris Cannam on 19/08/2011.
 *  Copyright 2011 QMUL. All rights reserved.
 *
 */

#ifndef CANNAM_MIDI_FILE_LOADER
#define  CANNAM_MIDI_FILE_LOADER

#include "MIDIFileReader.h"
//#include "MIDIEvent.h"
#include "midiEventHolder.h"
using namespace MIDIConstants;

class CannamMidiFileLoader{
	
public:
	CannamMidiFileLoader();
	
	typedef std::vector<double> DoubleVector;
	
	int loadFile(std::string& filename, midiEventHolder& myMidiEvents);

	void createEventTiming( midiEventHolder& myMidiEvents);
	void setTempoFromMidiValue(long tempo,  midiEventHolder& myMidiEvents);
	double firstNoteTime;
	int firstTickTime;
	bool chopBeginning;
	void chopBeginningfromEvents(midiEventHolder&  myMidiEvents);
	
	typedef std::vector<int> IntVector;
	IntVector v;
	int noteOnIndex;
	
	int ticksPerMeasure;
	void newTimeSignature(int ticks, int numerator, int denominator, midiEventHolder& myMidiEvents);
	void updateMeasureToTickPosition(int ticks,  midiEventHolder& myMidiEvents);
	bool printMidiInfo;
	void printMeasuresSoFar(midiEventHolder& myMidiEvents);
	void correctMeasuresTiming(midiEventHolder& myMidiEvents);
	double fileDuration;
	float beatsPerMeasure;
	float numberOfBeatsAtLastPosition;
	int lastBeatPosition;
	double getBeatPositionForTickCount(long t, midiEventHolder& myMidiEvents);
	void printUpToIndex(const int& index, midiEventHolder& midiEvents);
};
#endif