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);