diff --git a/src/sfizz/FilterPool.cpp b/src/sfizz/FilterPool.cpp index 88b1802f..8fbd356d 100644 --- a/src/sfizz/FilterPool.cpp +++ b/src/sfizz/FilterPool.cpp @@ -38,8 +38,15 @@ void sfz::FilterHolder::setup(const Region& region, unsigned filterId, int noteN } const auto keytrack = description->keytrack * float(noteNumber - description->keycenter); baseCutoff *= centsFactor(keytrack); - const auto veltrack = description->veltrack * velocity; - baseCutoff *= centsFactor(veltrack); + auto veltrack = description->veltrack; + + for (const auto& mod : description->veltrackCC) { + const auto& curve = resources.getCurves().getCurve(mod.data.curve); + const float value = resources.getMidiState().getCCValue(mod.cc); + veltrack += curve.evalNormalized(value) * mod.data.modifier; + } + + baseCutoff *= centsFactor(veltrack * velocity); baseCutoff = Default::filterCutoff.bounds.clamp(baseCutoff); baseGain = description->gain;