diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 084d4a81..64ddebe9 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -950,9 +950,11 @@ void Voice::Impl::fillWithData(AudioSpan buffer) noexcept else { // cut short the voice at the instant of reaching end of sample const auto sampleEnd = min( - static_cast(currentPromise_->information.end), - static_cast(source.getNumFrames()) - ) - 1; + int(region_->trueSampleEnd(resources_.filePool.getOversamplingFactor())), + int(currentPromise_->information.end), + int(source.getNumFrames())) + - 1; + for (unsigned i = 0; i < numSamples; ++i) { if ((*indices)[i] >= sampleEnd) { #ifndef NDEBUG