--- linuxsampler/trunk/src/engines/EngineBase.h 2010/01/30 10:30:02 2055 +++ 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,11 +1334,7 @@ pKey->itSelf = pChannel->pActiveKeys->allocAppend(); *pKey->itSelf = itNoteOnEvent->Param.Note.Key; } - if (itNewVoice->KeyGroup) { - uint** ppKeyGroup = &pChannel->ActiveKeyGroups[itNewVoice->KeyGroup]; - *ppKeyGroup = &*pKey->itSelf; // put key as the (new) active key to its key group - } - 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 } }