From 9e6f77ac8640cd36bcacc377385223967c8c2ff2 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Sun, 9 Feb 2020 18:07:56 +0100 Subject: [PATCH] Clamp filter coefficients --- src/sfizz/FilterPool.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sfizz/FilterPool.cpp b/src/sfizz/FilterPool.cpp index 0904d62e..4af9f7b6 100644 --- a/src/sfizz/FilterPool.cpp +++ b/src/sfizz/FilterPool.cpp @@ -32,6 +32,7 @@ void sfz::FilterHolder::setup(const FilterDescription& description, int noteNumb baseCutoff *= centsFactor(keytrack); const auto veltrack = description.veltrack * normalizeVelocity(velocity); baseCutoff *= centsFactor(veltrack); + baseCutoff = Default::filterCutoffRange.clamp(baseCutoff); baseGain = description.gain; baseResonance = description.resonance; @@ -51,16 +52,19 @@ void sfz::FilterHolder::process(const float** inputs, float** outputs, unsigned for (auto& mod: description->cutoffCC) { lastCutoff *= centsFactor(midiState.getCCValue(mod.first) * mod.second); } + lastCutoff = Default::filterCutoffRange.clamp(lastCutoff); lastResonance = baseResonance; for (auto& mod: description->resonanceCC) { lastResonance += midiState.getCCValue(mod.first) * mod.second; } + lastResonance = Default::filterResonanceRange.clamp(lastResonance); lastGain = baseGain; for (auto& mod: description->gainCC) { lastGain += midiState.getCCValue(mod.first) * mod.second; } + lastGain = Default::filterGainRange.clamp(lastGain); filter.process(inputs, outputs, lastCutoff, lastResonance, lastGain, numFrames); }