CSharpSynth.Sequencer.MidiSequencer.Process C# (CSharp) Method

Process() public method

public Process ( int frame ) : CSharpSynth.Sequencer.MidiSequencerEvent
frame int
return CSharpSynth.Sequencer.MidiSequencerEvent
        public MidiSequencerEvent Process(int frame)
        {
            seqEvt.Events.Clear();
            //stop or loop
            if ((sampleTime >= (int)_MidiFile.Tracks[trackNumber].TotalTime)/* || ((trackSection != null) && (sampleTime >= (int)trackSection.EndSample))*/)
            {
                sampleTime = 0;
                eventIndex = 0;
                trackSection = null;

                if (looping == true)
                {
                    //Clear the current programs for the channels.
                    Array.Clear(currentPrograms, 0, currentPrograms.Length);
                    //Clear vol, pan, and tune
                    ResetControllers();
                    //set bpm
                    _MidiFile.BeatsPerMinute = 120;
                } else if (HandleEndOfTrack(synth)) {
                    //Clear vol, pan, and tune
                    ResetControllers();
                    //set bpm
                    _MidiFile.BeatsPerMinute = 120;

                } else {
                    playing = false;
                    synth.NoteOffAll(true);
                    return null;
                }
            }
            while (eventIndex < _MidiFile.Tracks[trackNumber].EventCount && _MidiFile.Tracks[trackNumber].MidiEvents[eventIndex].deltaTime < (sampleTime + frame))
            {
                seqEvt.Events.Add(_MidiFile.Tracks[trackNumber].MidiEvents[eventIndex]);
                eventIndex++;
            }
            return seqEvt;
        }