--- linuxsampler/trunk/src/engines/EngineBase.h 2010/08/10 12:05:19 2114 +++ linuxsampler/trunk/src/engines/EngineBase.h 2010/08/12 15:36:15 2115 @@ -1064,7 +1064,7 @@ VoiceIterator itVoiceToBeKilled = pOtherKey->pActiveVoices->first(); VoiceIterator end = pOtherKey->pActiveVoices->end(); for (; itVoiceToBeKilled != end; ++itVoiceToBeKilled) { - if (itVoiceToBeKilled->Type != Voice::type_release_trigger) + if (!(itVoiceToBeKilled->Type & Voice::type_release_trigger)) itVoiceToBeKilled->Kill(itNoteOnEventOnKeyList); } } @@ -1201,7 +1201,7 @@ VoiceIterator itVoiceToBeKilled = pKey->pActiveVoices->first(); VoiceIterator end = pKey->pActiveVoices->end(); for (; itVoiceToBeKilled != end; ++itVoiceToBeKilled) { - if (itVoiceToBeKilled->Type != Voice::type_release_trigger) + if (!(itVoiceToBeKilled->Type & Voice::type_release_trigger)) itVoiceToBeKilled->Kill(itNoteOffEventOnKeyList); } } @@ -1334,7 +1334,7 @@ pKey->itSelf = pChannel->pActiveKeys->allocAppend(); *pKey->itSelf = itNoteOnEvent->Param.Note.Key; } - if (itNewVoice->Type == Voice::type_release_trigger_required) pKey->ReleaseTrigger = true; // mark key for the need of release triggered voice(s) + if (itNewVoice->Type & Voice::type_release_trigger_required) pKey->ReleaseTrigger = true; // mark key for the need of release triggered voice(s) return 0; // success } }