diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 574fd2a9..8f655f77 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -574,7 +574,8 @@ void sfz::Voice::fillWithData(AudioSpan buffer) noexcept if (isLooping) { loopStart = static_cast(region->loopStart(currentPromise->oversamplingFactor)); loopSize = loopEnd + 1 - loopStart; - loopXfadeSize = static_cast(lroundPositive(region->loopCrossfade * sampleRate)); + loopXfadeSize = static_cast( + lroundPositive(region->loopCrossfade * static_cast(currentPromise->oversamplingFactor) * currentPromise->sampleRate)); loopXfOutStart = loopEnd + 1 - loopXfadeSize; loopXfInStart = loopStart - loopXfadeSize; for (auto& buf : xfadeTemp) {