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