MidiSheetMusic.MidiFile.StartAtPauseTime C# (CSharp) Method

StartAtPauseTime() private static method

private static StartAtPauseTime ( List list, int pauseTime ) : List[]
list List
pauseTime int
return List[]
        private static List<MidiEvent>[] StartAtPauseTime(List<MidiEvent>[] list, int pauseTime)
        {
            List<MidiEvent>[] newlist = new List<MidiEvent>[ list.Length];
            for (int tracknum = 0; tracknum < list.Length; tracknum++) {
            List<MidiEvent> events = list[tracknum];
            List<MidiEvent> newevents = new List<MidiEvent>(events.Count);
            newlist[tracknum] = newevents;

            bool foundEventAfterPause = false;
            foreach (MidiEvent mevent in events) {

                if (mevent.StartTime < pauseTime) {
                    if (mevent.EventFlag == EventNoteOn ||
                        mevent.EventFlag == EventNoteOff) {

                        /* Skip NoteOn/NoteOff event */
                    }
                    else if (mevent.EventFlag == EventControlChange) {
                        mevent.DeltaTime = 0;
                        UpdateControlChange(newevents, mevent);
                    }
                    else {
                        mevent.DeltaTime = 0;
                        newevents.Add(mevent);
                    }
                }
                else if (!foundEventAfterPause) {
                    mevent.DeltaTime = (mevent.StartTime - pauseTime);
                    newevents.Add(mevent);
                    foundEventAfterPause = true;
                }
                else {
                    newevents.Add(mevent);
                }
            }
            }
            return newlist;
        }