Files
Work/midiseq/MIDISequencer.cpp
2024-08-07 09:16:27 -04:00

32 lines
863 B
C++

#include <midiseq/MIDISequencer.hpp>
#include <common/mmtimer.hpp>
MIDISequencer::MIDISequencer()
{
}
MIDISequencer::~MIDISequencer()
{
}
bool MIDISequencer::sequence(MIDIOutputDevice &midiDevice)
{
DWORD currTime(MMTimer::getSystemTime());
int currentTrack;
bool eligibleTracks;
eligibleTracks=false;
for(currentTrack=0;currentTrack<MIDIBlock::MaxTracks;currentTrack++)
{
if(mTrackIndices[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;
}