diff --git a/src/sfizz/MidiState.cpp b/src/sfizz/MidiState.cpp index b1536251..9406d66c 100644 --- a/src/sfizz/MidiState.cpp +++ b/src/sfizz/MidiState.cpp @@ -51,6 +51,12 @@ void sfz::MidiState::setSampleRate(float sampleRate) noexcept void sfz::MidiState::advanceTime(int numSamples) noexcept { internalClock += numSamples; + for (auto& ccEvents: cc) { + ASSERT(!ccEvents.empty()); // CC event vectors should never be empty + ccEvents.front().second = ccEvents.back().second; + ccEvents.front().first = 0; + ccEvents.resize(1); + } } void sfz::MidiState::setSamplesPerBlock(int samplesPerBlock) noexcept diff --git a/src/sfizz/MidiState.h b/src/sfizz/MidiState.h index 103ed9cd..22df7242 100644 --- a/src/sfizz/MidiState.h +++ b/src/sfizz/MidiState.h @@ -96,7 +96,8 @@ public: /** * @brief Advances the internal clock of a given amount of samples. - * You should call this at each callback. + * You should call this at each callback. This will flush the events + * in the midistate memory. * * @param numSamples the number of samples of clock advance */