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