--- linuxsampler/trunk/src/engines/gig/Engine.cpp 2007/09/13 22:20:38 1347 +++ linuxsampler/trunk/src/engines/gig/Engine.cpp 2007/09/14 14:45:11 1348 @@ -778,7 +778,7 @@ } } } - + pEngineChannel->SetVoiceCount(voiceCount); pEngineChannel->SetDiskStreamCount(streamCount); } @@ -1686,8 +1686,10 @@ break; } case 65: { // portamento on / off - KillAllVoices(pEngineChannel, itControlChangeEvent); - pEngineChannel->PortamentoMode = itControlChangeEvent->Param.CC.Value >= 64; + const bool bPortamento = itControlChangeEvent->Param.CC.Value >= 64; + if (bPortamento != pEngineChannel->PortamentoMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); + pEngineChannel->PortamentoMode = bPortamento; break; } case 66: { // sostenuto @@ -1757,12 +1759,14 @@ break; } case 126: { // mono mode on - KillAllVoices(pEngineChannel, itControlChangeEvent); + if (!pEngineChannel->SoloMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); pEngineChannel->SoloMode = true; break; } case 127: { // poly mode on - KillAllVoices(pEngineChannel, itControlChangeEvent); + if (pEngineChannel->SoloMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); pEngineChannel->SoloMode = false; break; } @@ -1971,7 +1975,7 @@ } String Engine::Version() { - String s = "$Revision: 1.80 $"; + String s = "$Revision: 1.81 $"; return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword }