--- linuxsampler/trunk/src/engines/EngineChannel.cpp 2007/02/07 17:45:19 1041 +++ linuxsampler/trunk/src/engines/EngineChannel.cpp 2007/02/07 21:51:19 1044 @@ -38,9 +38,9 @@ uiMidiBankMsb = 0; uiMidiBankLsb = 0; uiMidiProgram = 0; - uiMidiRpnMsb = uiMidiRpnLsb = 0; bProgramChangeReceived = bMidiBankMsbReceived = bMidiBankLsbReceived = false; iMidiInstrumentMap = NO_MIDI_INSTRUMENT_MAP; + ResetMidiRpnController(); } void EngineChannel::SetMute(int state) throw (Exception) { @@ -161,14 +161,21 @@ void EngineChannel::SetMidiRpnControllerMsb(uint8_t CtrlMSB) { uiMidiRpnMsb = CtrlMSB; + bMidiRpnReceived = true; } void EngineChannel::SetMidiRpnControllerLsb(uint8_t CtrlLSB) { uiMidiRpnLsb = CtrlLSB; + bMidiRpnReceived = true; + } + + void EngineChannel::ResetMidiRpnController() { + uiMidiRpnMsb = uiMidiRpnLsb = 0; + bMidiRpnReceived = false; } int EngineChannel::GetMidiRpnController() { - return (uiMidiRpnMsb << 8) | uiMidiRpnLsb; + return (bMidiRpnReceived) ? (uiMidiRpnMsb << 8) | uiMidiRpnLsb : -1; } } // namespace LinuxSampler