diff --git a/cmMidiFilePlay.c b/cmMidiFilePlay.c index 58cb44b..56b1ea4 100644 --- a/cmMidiFilePlay.c +++ b/cmMidiFilePlay.c @@ -148,9 +148,6 @@ cmMfpRC_t cmMfpLoadHandle( cmMfpH_t h, cmMidiFileH_t mfH ) p->mtime = 0; p->closeFileFl= false; - //if( p->msgIdx > 0 ) - // p->mtime = p->msgV[0]->tick * p->microsPerTick; - return kOkMfpRC; } @@ -213,21 +210,15 @@ cmMfpRC_t cmMfpClock( cmMfpH_t h, unsigned dusecs ) // sent and the end of the time window for this mfpClock() cycle p->etime += dusecs; - //printf("init e:%i d:%i\n",p->etime, p->mtime); - // if the elapsed time (etime) since the last msg is greater or equal // to the delta time to the next msg (mtime) while( p->etime >= p->mtime ) { - //printf("e:%i d:%i\n",p->etime, p->mtime); - if( mp->status == kMetaStId && mp->metaId == kTempoMdId ) - _cmMfpUpdateMicrosPerTick(p,mp->u.iVal ); - - + // send the current message p->cbFunc( p->userCbPtr, p->mtime, mp ); - unsigned atick0 = mp->atick; + unsigned amicro = mp->amicro; ++(p->msgIdx); @@ -235,18 +226,15 @@ cmMfpRC_t cmMfpClock( cmMfpH_t h, unsigned dusecs ) break; // get the next msg to send - mp = p->msgV[p->msgIdx]; + mp = p->msgV[p->msgIdx]; - assert( mp->atick >= atick0 ); - unsigned dtick = mp->atick - atick0; // we probably went past the actual mtime - so update etime // with the delta usecs from the msg just sent and the current time p->etime -= p->mtime; // calc the delta usecs from the message just sent to the next msg to send - //p->mtime = (mp->tick - p->msgV[p->msgIdx-1]->tick) * p->microsPerTick; - p->mtime = dtick * p->microsPerTick; + p->mtime = mp->amicro - amicro; }