private static List<MidiEvent>[] CloneMidiEvents(List<MidiEvent>[] origlist)
{
List<MidiEvent>[] newlist = new List<MidiEvent>[ origlist.Length];
for (int tracknum = 0; tracknum < origlist.Length; tracknum++) {
List<MidiEvent> origevents = origlist[tracknum];
List<MidiEvent> newevents = new List<MidiEvent>(origevents.Count);
newlist[tracknum] = newevents;
foreach (MidiEvent mevent in origevents) {
newevents.Add( mevent.Clone() );
}
}
return newlist;
}