From 06d111cbd4b49427f10eb34dff0c3e187655f401 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Mon, 17 Aug 2020 16:01:58 +0200 Subject: [PATCH] Do not require a curve for the concave case (test helper) --- src/sfizz/Region.cpp | 8 +++++++- src/sfizz/Synth.cpp | 2 -- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index fb6ba39e..2d96835a 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -1518,7 +1518,13 @@ float sfz::Region::velocityCurve(float velocity) const noexcept { ASSERT(velocity >= 0.0f && velocity <= 1.0f); - float gain = std::fabs(ampVeltrack) * (1.0f - velCurve->evalNormalized(velocity)); + float gain; + if (velCurve) + gain = velCurve->evalNormalized(velocity); + else + gain = velocity * velocity; + + gain = std::fabs(ampVeltrack) * (1.0f - gain); gain = (ampVeltrack < 0) ? gain : (1.0f - gain); return gain; diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 3307a8e9..9f095c4c 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -569,8 +569,6 @@ void sfz::Synth::finalizeSfzLoad() if (!region->velocityPoints.empty()) region->velCurve = Curve::buildFromVelcurvePoints( region->velocityPoints, Curve::Interpolator::Linear); - else - region->velCurve = resources.curves.getCurve(4); region->registerPitchWheel(0); region->registerAftertouch(0);