diff options
| -rw-r--r-- | engines/scumm/imuse/pcspk.cpp | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index 6eaf7ad168..1b8afcabe5 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -307,8 +307,15 @@ void PcSpkDriver::MidiChannel_PcSpk::controlChange(byte control, byte value) {  	case 7:  		_tl = value; -		// TODO: Properly implement this -		_owner->updateNote(); +		if (_owner->_activeChannel == this) { +			if (_tl == 0) { +				_owner->_lastActiveChannel = 0; +				_owner->_lastActiveOut = 0; +				_owner->_pcSpk.stop(); +			} else { +				_owner->output((_out.note << 7) + _pitchBend + _out.unk60 + _out.unkE); +			} +		}  		break;  	case 64: | 
