NScumm.Core.Audio.PCSpeakerDriver.MidiChannelPcSpk.ControlChange C# (CSharp) Method

ControlChange() public method

public ControlChange ( byte control, byte value ) : void
control byte
value byte
return void
            public override void ControlChange(byte control, byte value)
            {
                switch (control)
                {
                    case 1:
                        if (_out.effectEnvelopeA.state != 0 && _out.effectDefA.useModWheel != 0)
                            _out.effectEnvelopeA.modWheelState = (byte)(value >> 2);
                        if (_out.effectEnvelopeB.state != 0 && _out.effectDefB.useModWheel != 0)
                            _out.effectEnvelopeB.modWheelState = (byte)(value >> 2);
                        break;

                    case 7:
                        _tl = value;
                        if (_owner._activeChannel == this)
                        {
                            if (_tl == 0)
                            {
                                _owner._lastActiveChannel = null;
                                _owner._lastActiveOut = 0;
                                _owner._pcSpk.Stop();
                            }
                            else
                            {
                                _owner.Output((ushort)((_out.note << 7) + _pitchBend + _out.unk60 + _out.unkE));
                            }
                        }
                        break;

                    case 64:
                        _sustain = value;
                        if (value == 0 && _out.sustainNoteOff != 0)
                        {
                            _out.active = 0;
                            _owner.UpdateNote();
                        }
                        break;

                    case 123:
                        _out.active = 0;
                        _owner.UpdateNote();
                        break;
                }
            }