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