From a4df74a9d8383cf21ae2be283adba8f017fc808b Mon Sep 17 00:00:00 2001 From: paulfd Date: Tue, 10 Sep 2019 21:25:21 +0200 Subject: [PATCH] Added a test for the velocity endpoints bug --- tests/RegionCrossfadesT.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/RegionCrossfadesT.cpp b/tests/RegionCrossfadesT.cpp index 02ab5903..8d730e1c 100644 --- a/tests/RegionCrossfadesT.cpp +++ b/tests/RegionCrossfadesT.cpp @@ -229,4 +229,32 @@ TEST_CASE("[Region] Crossfade out on CC - gain") ccState[24] = 23; REQUIRE( region.getCrossfadeGain(ccState) == 0.25_a ); ccState[24] = 24; REQUIRE( region.getCrossfadeGain(ccState) == 0.0_a ); ccState[24] = 25; REQUIRE( region.getCrossfadeGain(ccState) == 0.0_a ); +} + +TEST_CASE("[Region] Velocity bug for extreme values - veltrack at 0") +{ + sfz::Region region {}; + region.parseOpcode({ "sample", "*sine" }); + region.parseOpcode({ "amp_veltrack", "0" }); + REQUIRE( region.getNoteGain(64, 127) == 1.0_a ); + REQUIRE( region.getNoteGain(64, 0) == 1.0_a ); +} + + +TEST_CASE("[Region] Velocity bug for extreme values - positive veltrack") +{ + sfz::Region region {}; + region.parseOpcode({ "sample", "*sine" }); + region.parseOpcode({ "amp_veltrack", "100" }); + REQUIRE( region.getNoteGain(64, 127) == 1.0_a ); + REQUIRE( region.getNoteGain(64, 0) == Approx(0.0).margin(0.0001) ); +} + +TEST_CASE("[Region] Velocity bug for extreme values - negative veltrack") +{ + sfz::Region region {}; + region.parseOpcode({ "sample", "*sine" }); + region.parseOpcode({ "amp_veltrack", "-100" }); + REQUIRE( region.getNoteGain(64, 127) == Approx(0.0).margin(0.0001) ); + REQUIRE( region.getNoteGain(64, 0) == 1.0_a ); } \ No newline at end of file