#include #include MIDISequencer::MIDISequencer() { } MIDISequencer::~MIDISequencer() { } bool MIDISequencer::sequence(MIDIOutputDevice &midiDevice) { DWORD currTime(MMTimer::getSystemTime()); int currentTrack; bool eligibleTracks; eligibleTracks=false; for(currentTrack=0;currentTrack=((*mMIDIData)[currentTrack]).size())continue; eligibleTracks=true; while(((*mMIDIData)[currentTrack])[mTrackIndices[currentTrack]].playTime()<=currTime) { if(!midiDevice.midiEvent(((*mMIDIData)[currentTrack])[mTrackIndices[currentTrack]]))return false; mTrackIndices[currentTrack]=mTrackIndices[currentTrack]+1; if(mTrackIndices[currentTrack]>=((*mMIDIData)[currentTrack]).size())break; } } return eligibleTracks; }