From 4d8c780df8ef0ce32873fe330b91cf548b64e588 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Thu, 3 Aug 2023 13:25:03 +0200 Subject: [PATCH] Fix FlexEGs shape --- src/sfizz/FlexEGDescription.cpp | 4 ++-- tests/FlexEGT.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sfizz/FlexEGDescription.cpp b/src/sfizz/FlexEGDescription.cpp index 98d99d21..2f62b154 100644 --- a/src/sfizz/FlexEGDescription.cpp +++ b/src/sfizz/FlexEGDescription.cpp @@ -56,14 +56,14 @@ std::shared_ptr FlexEGs::getShapeCurve(float shape) else if (shape > 0) { for (unsigned i = 0; i < numPoints; ++i) { float x = float(i) / (numPoints - 1); - points[i] = std::pow(x, shape); + points[i] = std::pow(x, 1 + shape); } *curve = Curve::buildFromPoints(points); } else if (shape < 0) { for (unsigned i = 0; i < numPoints; ++i) { float x = float(i) / (numPoints - 1); - points[i] = 1 - std::pow(1 - x, -shape); + points[i] = 1 - std::pow(1 - x, 1 - shape); } *curve = Curve::buildFromPoints(points); } diff --git a/tests/FlexEGT.cpp b/tests/FlexEGT.cpp index a35711e6..ae000ab0 100644 --- a/tests/FlexEGT.cpp +++ b/tests/FlexEGT.cpp @@ -251,10 +251,10 @@ TEST_CASE("[FlexEG] Detailed numerical envelope test (with shapes)") std::vector output; std::vector expected { 0.0f, - 0.01f, 0.04f, 0.09f, 0.16f, 0.25f, - 0.58f, 0.72f, 0.83f, 0.92f, 1.0f, + 0.002f, 0.016f, 0.054f, 0.128f, 0.25f, + 0.317f, 0.44f, 0.6f, 0.787f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 0.99f, 0.97f, 0.87f, 0.59f, 0.0f, + 1.0f, 0.99f, 0.922f, 0.672f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; output.resize(expected.size());