From 612265ebb5c9e3441b45c3abbd5b176c75ff1c59 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sun, 29 Mar 2020 16:08:55 +0200 Subject: [PATCH] If an event is registered at some delay, shadow the previous value --- src/sfizz/MidiState.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/sfizz/MidiState.cpp b/src/sfizz/MidiState.cpp index c3f6f6cb..b4267f12 100644 --- a/src/sfizz/MidiState.cpp +++ b/src/sfizz/MidiState.cpp @@ -105,7 +105,10 @@ void sfz::MidiState::ccEvent(int delay, int ccNumber, float ccValue) noexcept { ASSERT(ccValue >= 0.0 && ccValue <= 1.0); const auto insertionPoint = absl::c_upper_bound(cc[ccNumber], delay, MidiEventDelayComparator{}); - cc[ccNumber].insert(insertionPoint, { delay, ccValue }); + if (insertionPoint == cc[ccNumber].end() || insertionPoint->delay != delay) + cc[ccNumber].insert(insertionPoint, { delay, ccValue }); + else + insertionPoint->value = ccValue; } float sfz::MidiState::getCCValue(int ccNumber) const noexcept