diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index fd12b218..46c0109d 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -374,7 +374,16 @@ bool sfz::Synth::loadSfzFile(const fs::path& file) region->hasStereoSample = true; // TODO: adjust with LFO targets - const auto maxOffset = region->offset + region->offsetRandom; + const auto maxOffset = [region]() { + uint64_t sumOffsetCC = region->offset + region->offsetRandom; + for (const auto& offsets: region->offsetCC) + sumOffsetCC += offsets.value; + if (static_cast(Default::offsetCCRange.getEnd()) < sumOffsetCC) + return Default::offsetCCRange.getEnd(); + + return static_cast(sumOffsetCC); + }(); + if (!resources.filePool.preloadFile(region->sample, maxOffset)) removeCurrentRegion(); }