// 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); } } }