--- linuxsampler/trunk/src/engines/common/AbstractVoice.cpp 2016/07/09 14:38:33 2931 +++ linuxsampler/trunk/src/engines/common/AbstractVoice.cpp 2016/07/10 14:24:13 2935 @@ -187,6 +187,8 @@ Pitch = CalculatePitchInfo(PitchBend); NotePitch = (pNote) ? pNote->Override.Pitch : 1.0f; + NoteCutoff = (pNote) ? pNote->Override.Cutoff : 1.0f; + NoteResonance = (pNote) ? pNote->Override.Resonance : 1.0f; // the length of the decay and release curves are dependent on the velocity const double velrelease = 1 / GetVelocityRelease(itNoteOnEvent->Param.Note.Velocity); @@ -522,7 +524,10 @@ pSignalUnitRack->GetEndpointUnit()->CalculatePitch(finalSynthesisParameters.fFinalPitch); } - + + fFinalCutoff *= NoteCutoff; + fFinalResonance *= NoteResonance; + // limit the pitch so we don't read outside the buffer finalSynthesisParameters.fFinalPitch = RTMath::Min(finalSynthesisParameters.fFinalPitch, float(1 << CONFIG_MAX_PITCH)); @@ -717,6 +722,12 @@ NotePanLeft = AbstractEngine::PanCurveValueNorm(itEvent->Param.NoteSynthParam.AbsValue, 0 /*left*/); NotePanRight = AbstractEngine::PanCurveValueNorm(itEvent->Param.NoteSynthParam.AbsValue, 1 /*right*/); break; + case Event::synth_param_cutoff: + NoteCutoff = itEvent->Param.NoteSynthParam.AbsValue; + break; + case Event::synth_param_resonance: + NoteResonance = itEvent->Param.NoteSynthParam.AbsValue; + break; } } }