|
@@ -635,9 +635,9 @@ cmTlRC_t _cmTlProcMidiFile( _cmTl_t* p, _cmTlObj_t* op, cmMidiFileH_t mfH )
|
635
|
635
|
unsigned mn = cmMidiFileMsgCount(mfH);
|
636
|
636
|
const cmMidiTrackMsg_t** mapp = cmMidiFileMsgArray(mfH);
|
637
|
637
|
unsigned mi = 0;
|
638
|
|
- double accum = 0;
|
|
638
|
+ //double accum = 0;
|
639
|
639
|
_cmTlObj_t* refOp = op;
|
640
|
|
- bool fl = false;
|
|
640
|
+ //bool fl = false;
|
641
|
641
|
unsigned dtick = 0;
|
642
|
642
|
mfp->noteOnCnt = 0;
|
643
|
643
|
|
|
@@ -649,16 +649,16 @@ cmTlRC_t _cmTlProcMidiFile( _cmTl_t* p, _cmTlObj_t* op, cmMidiFileH_t mfH )
|
649
|
649
|
|
650
|
650
|
dtick = mp->dtick;
|
651
|
651
|
|
652
|
|
- if( fl )
|
653
|
|
- {
|
654
|
|
- dtick = 0;
|
655
|
|
- fl = mp->dtick == 0;
|
656
|
|
- }
|
|
652
|
+ //if( fl )
|
|
653
|
+ //{
|
|
654
|
+ // dtick = 0;
|
|
655
|
+ // fl = mp->dtick == 0;
|
|
656
|
+ //}
|
657
|
657
|
|
658
|
|
- accum += dtick * p->srate / 1000000;
|
|
658
|
+ //accum += dtick * p->srate / 1000000;
|
659
|
659
|
|
660
|
660
|
//int begSmpIdx = floor(accum_micros * p->srate / 1000000);
|
661
|
|
- int begSmpIdx = floor( dtick * p->srate / 1000000 );
|
|
661
|
+ int begSmpIdx = dtick; //floor( dtick * p->srate / 1000000.0 );
|
662
|
662
|
int durSmpCnt = 0;
|
663
|
663
|
unsigned midiTrkMsgByteCnt = cmMidiFilePackTrackMsgBufByteCount( mp );
|
664
|
664
|
unsigned recdByteCnt = sizeof(cmTlMidiEvt_t) + midiTrkMsgByteCnt;
|
|
@@ -669,7 +669,8 @@ cmTlRC_t _cmTlProcMidiFile( _cmTl_t* p, _cmTlObj_t* op, cmMidiFileH_t mfH )
|
669
|
669
|
// count the note-on messages
|
670
|
670
|
if( mp->status == kNoteOnMdId )
|
671
|
671
|
{
|
672
|
|
- durSmpCnt = floor(mp->u.chMsgPtr->durTicks * p->srate / 1000000 );
|
|
672
|
+ //durSmpCnt = floor(mp->u.chMsgPtr->durTicks * p->srate / 1000000.0 );
|
|
673
|
+ durSmpCnt = mp->u.chMsgPtr->durTicks;
|
673
|
674
|
++mfp->noteOnCnt;
|
674
|
675
|
}
|
675
|
676
|
|
|
@@ -727,7 +728,7 @@ cmTlRC_t _cmTlAllocMidiFileRecd( _cmTl_t* p, const cmChar_t* nameStr, const cmCh
|
727
|
728
|
unsigned durSmpCnt = floor(cmMidiFileDurSecs(mfH)*p->srate);
|
728
|
729
|
|
729
|
730
|
// convert the midi file from ticks to microseconds
|
730
|
|
- cmMidiFileTickToMicros(mfH);
|
|
731
|
+ cmMidiFileTickToSamples(mfH,p->srate,false);
|
731
|
732
|
|
732
|
733
|
// assign note durations to all note-on msg's
|
733
|
734
|
cmMidiFileCalcNoteDurations(mfH);
|
|
@@ -957,6 +958,11 @@ double cmTimeLineSampleRate( cmTlH_t h )
|
957
|
958
|
return p->srate;
|
958
|
959
|
}
|
959
|
960
|
|
|
961
|
+int cmTimeLineSeqToLocalSampleIndex( int seqSmpIdx, cmTlObj_t* localObjPtr )
|
|
962
|
+{
|
|
963
|
+ return seqSmpIdx - localObjPtr->seqSmpIdx;
|
|
964
|
+}
|
|
965
|
+
|
960
|
966
|
cmTlObj_t* _cmTimeLineIdToObj( _cmTl_t* p, unsigned seqId, unsigned id )
|
961
|
967
|
{
|
962
|
968
|
assert( seqId < p->seqCnt );
|