public TrackSequence( Sequencer fakeSequencer, TrackInfo trackInfo ) { sequencer = fakeSequencer; info = trackInfo; nextEventIndex = 0; trackEnded = false; remainingDeltas = info.events[ 0 ].deltas; sumsOfDeltas = remainingDeltas; noteOns = new List<Sequencer.NoteOn>(); }
public TrackInfo Parse( FileStream stream, int trackIndex ) { TrackInfo result = new TrackInfo(); result.index = trackIndex; ParseMtrk( stream ); OmitIgnoredTrackSize( stream ); MidiEventParser eventParser = new MidiEventParser(); List<MidiEvent> events = new List<MidiEvent>(); MidiEvent midiEvent = null; while ( !( midiEvent is EndOfTrackMetaEvent ) && stream.Position < stream.Length-1 ) { midiEvent = eventParser.Parse( stream ); events.Add( midiEvent ); } result.events = events.ToArray(); return result; }
void InitializeTrackSequences( TrackInfo[] tracks ) { trackSequences = new TrackSequence[ tracks.Length ]; for ( int i = 0; i < trackSequences.Length; i++ ) { trackSequences[ i ] = new TrackSequence( this, tracks[ i ] ); } }
static void LogTrack( TrackInfo info, StringBuilder output ) { output.AppendLine( info.ToString() ); }