AlphaSynth.Synthesis.Synthesizer.NoteOffAllChannel C# (CSharp) Method

NoteOffAllChannel() public method

public NoteOffAllChannel ( int channel, bool immediate ) : void
channel int
immediate bool
return void
        public void NoteOffAllChannel(int channel, bool immediate)
        {
            var node = _voiceManager.ActiveVoices.First;
            while (node != null)
            {
                if (channel == node.Value.VoiceParams.Channel)
                {
                    if (immediate)
                    {
                        node.Value.StopImmediately();
                        var delnode = node;
                        node = node.Next;
                        _voiceManager.ActiveVoices.Remove(delnode);
                        _voiceManager.FreeVoices.AddFirst(delnode.Value);
                    }
                    else
                    {
                        //if hold pedal is enabled do not stop the voice
                        if (_synthChannels[channel].HoldPedal)
                            node.Value.VoiceParams.NoteOffPending = true;
                        else
                            node.Value.Stop();
                        node = node.Next;
                    }
                }
            }
        }