diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index b2beed4a..12c92bd6 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -1547,6 +1547,8 @@ void Voice::Impl::updateLoopInformation() noexcept loop_.start = static_cast(region_->loopStart(factor)); loop_.size = loop_.end + 1 - loop_.start; loop_.xfSize = static_cast(lroundPositive(region_->loopCrossfade * rate)); + // Clamp the crossfade to the part available before the loop starts + loop_.xfSize = min(loop_.start, loop_.xfSize); loop_.xfOutStart = loop_.end + 1 - loop_.xfSize; loop_.xfInStart = loop_.start - loop_.xfSize; }