andrew@33: /* andrew@33: * MidiInputStream.h andrew@33: * MuseScoreMidiFollower andrew@33: * andrew@33: * Created by Andrew on 03/12/2011. andrew@33: * Copyright 2011 QMUL. All rights reserved. andrew@33: * andrew@33: */ andrew@33: andrew@33: #ifndef MIDI_INPUT_STREAM andrew@33: #define MIDI_INPUT_STREAM andrew@33: andrew@33: #include "ofMain.h" andrew@33: #include "ofxMidi.h" andrew@33: #include "midiEventHolder.h" andrew@33: //WOULD BE GOOD TO USE STD CONSTANTS here andrew@33: //#include "MIDIFileReader.h" andrew@33: //using namespace MIDIConstants; andrew@33: andrew@33: class MidiInputStream{ andrew@33: andrew@33: public: andrew@33: MidiInputStream(); andrew@33: bool noteInReceived(ofxMidiEventArgs &args); andrew@33: void reset(); andrew@33: void printNotes(); andrew@33: int endNote(int notePitch); andrew@33: andrew@33: typedef std::vector IntVector; andrew@33: typedef std::vector IntMatrix; andrew@33: andrew@33: typedef std::vector DoubleVector; andrew@33: DoubleVector eventTimesForNote; andrew@33: andrew@33: double calculateTotalScore(midiEventHolder& midiEvents); andrew@33: andrew@33: IntMatrix midiInputEvents; andrew@33: DoubleVector midiInputTimes; andrew@33: IntVector v; andrew@33: IntVector totalNotesRecievedByPitch; andrew@33: void newNoteCounted(const int& pitch); andrew@33: void printTotalCount(); andrew@33: andrew@33: double* startTime; andrew@33: midiEventHolder* eventHolder; andrew@33: andrew@33: int* transposeVal; andrew@33: andrew@33: double* factor; andrew@35: void printUpToIndex(const int& index, midiEventHolder& midiEvents); andrew@34: andrew@33: andrew@33: }; andrew@33: #endif