// Token: 0x06003252 RID: 12882 RVA: 0x00147588 File Offset: 0x00145788 public IEnumerable <MidiChunk> Convert(IEnumerable <MidiChunk> chunks) { TrackChunk[] array = chunks.OfType <TrackChunk>().ToArray <TrackChunk>(); if (array.Length != 1) { return(chunks); } MultiTrackChunksConverter.TrackChunkDescriptor[] array2 = (from i in Enumerable.Range(0, 17) select new MultiTrackChunksConverter.TrackChunkDescriptor()).ToArray <MultiTrackChunksConverter.TrackChunkDescriptor>(); FourBitNumber?fourBitNumber = null; using (IEnumerator <MidiEvent> enumerator = (from m in array.First <TrackChunk>().Events select m.Clone()).GetEnumerator()) { while (enumerator.MoveNext()) { MidiEvent midiEvent = enumerator.Current; Array.ForEach <MultiTrackChunksConverter.TrackChunkDescriptor>(array2, delegate(MultiTrackChunksConverter.TrackChunkDescriptor d) { d.DeltaTime += midiEvent.DeltaTime; }); ChannelEvent channelEvent = midiEvent as ChannelEvent; if (channelEvent != null) { array2[(int)(channelEvent.Channel + 1)].AddEvent(midiEvent.Clone()); fourBitNumber = null; } else { if (!(midiEvent is MetaEvent)) { fourBitNumber = null; } ChannelPrefixEvent channelPrefixEvent = midiEvent as ChannelPrefixEvent; if (channelPrefixEvent != null) { fourBitNumber = new FourBitNumber?((FourBitNumber)channelPrefixEvent.Channel); } if (fourBitNumber != null) { array2[(int)(fourBitNumber.Value + 1)].AddEvent(midiEvent); } else { array2[0].AddEvent(midiEvent); } } } } return((from d in array2 select d.Chunk into c where c.Events.Any <MidiEvent>() select c).Concat(from c in chunks where !(c is TrackChunk) select c)); }