cmMidiFilePlay.c : Updates to use amicro instead of dtick in MIDI msg.
This commit is contained in:
parent
8688a7f28c
commit
136cb97800
@ -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);
|
||||
|
||||
@ -237,16 +228,13 @@ cmMfpRC_t cmMfpClock( cmMfpH_t h, unsigned dusecs )
|
||||
// get the next msg to send
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user