Ejemplo n.º 1
0
        private string ToMBT(MidiEvent midiEvent, int ticksPerBeat, List <TimeSignatureChange> timeSignatures)
        {
            TimeSignatureChange latestTimeSig = FindLatestTimeSig(midiEvent.AbsoluteTime, timeSignatures);
            long relativeTime = midiEvent.AbsoluteTime - latestTimeSig.AbsoluteTime;
            long measure      = (relativeTime / (ticksPerBeat * latestTimeSig.BeatsPerMeasure)) + latestTimeSig.StartMeasureNumber;
            long beat         = ((relativeTime / ticksPerBeat) % latestTimeSig.BeatsPerMeasure) + 1;
            long tick         = relativeTime % ticksPerBeat;

            return(String.Format("{0}:{1}:{2}", measure, beat, tick));
        }
Ejemplo n.º 2
0
        private TimeSignatureChange FindLatestTimeSig(long absoluteTime, List <TimeSignatureChange> timeSignatures)
        {
            TimeSignatureChange latestChange = null;

            foreach (TimeSignatureChange change in timeSignatures)
            {
                if (absoluteTime >= change.AbsoluteTime)
                {
                    latestChange = change;
                }
                else
                {
                    break;
                }
            }
            if (latestChange != null)
            {
                latestChange = new TimeSignatureChange(0, 4, 1);
            }
            return(latestChange);
        }
Ejemplo n.º 3
0
 private TimeSignatureChange FindLatestTimeSig(long absoluteTime, List<TimeSignatureChange> timeSignatures)
 {
     TimeSignatureChange latestChange = null;
     foreach (TimeSignatureChange change in timeSignatures)
     {
         if (absoluteTime >= change.AbsoluteTime)
             latestChange = change;
         else
             break;
     }
     if (latestChange != null)
     {
         latestChange = new TimeSignatureChange(0, 4, 1);
     }
     return latestChange;
 }