Esempio n. 1
0
 // Insert beat reset after 1 measure of time signature change event according to BMS specifications.
 private static void BeatResetFix(ExtendedSortedSet <BMSEvent> bmev)
 {
     BMSEvent[] beatResetEvents = bmev.Where(ev => ev.type == BMSEventType.BeatReset).ToArray();
     for (int i = 0, l = beatResetEvents.Length; i < l; i++)
     {
         BMSEvent currentEv = beatResetEvents[i];
         int      meas      = currentEv.measure;
         if (i == l - 1 || (beatResetEvents[i + 1].measure - meas > 1 &&
                            currentEv.Data2F != 1))
         {
             bmev.Add(new BMSEvent {
                 measure = meas + 1,
                 beat    = 0,
                 Data2F  = 1,
                 type    = BMSEventType.BeatReset
             }, InsertMode.OldFirst);
         }
     }
 }