From 234105c34cdf7dc6cfd40bd8d0cb318827edee68 Mon Sep 17 00:00:00 2001 From: paulfd Date: Wed, 18 Sep 2019 09:13:41 +0200 Subject: [PATCH] Fixed my assumptions about note-off velocity; they are now always replaced with the previous note-ons --- sfizz/Synth.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sfizz/Synth.cpp b/sfizz/Synth.cpp index ec5f7f52..c523b71b 100644 --- a/sfizz/Synth.cpp +++ b/sfizz/Synth.cpp @@ -353,12 +353,15 @@ void sfz::Synth::noteOn(int delay, int channel, int noteNumber, uint8_t velocity } } -void sfz::Synth::noteOff(int delay, int channel, int noteNumber, uint8_t velocity) noexcept +void sfz::Synth::noteOff(int delay, int channel, int noteNumber, uint8_t velocity [[maybe_unused]]) noexcept { ASSERT(noteNumber < 128); ASSERT(noteNumber >= 0); - auto replacedVelocity = velocity == 0 ? sfz::getNoteVelocity(noteNumber) : velocity; + // FIXME: Some keyboards (e.g. Casio PX5S) can send a real note-off velocity. In this case, do we have a + // way in sfz to specify that a release trigger should NOT use the note-on velocity? + // auto replacedVelocity = (velocity == 0 ? sfz::getNoteVelocity(noteNumber) : velocity); + auto replacedVelocity = sfz::getNoteVelocity(noteNumber); auto randValue = randNoteDistribution(Random::randomGenerator); for (auto& voice : voices) voice->registerNoteOff(delay, channel, noteNumber, replacedVelocity);