diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 8a093612..58c360ab 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -1010,7 +1010,7 @@ void sfz::Synth::checkNotePolyphony(const Region* region, int delay, const Trigg } break; case SfzSelfMask::dontMask: - if (!selfMaskCandidate || selfMaskCandidate->getSourcePosition() < voice->getSourcePosition()) + if (!selfMaskCandidate || selfMaskCandidate->getAge() < voice->getAge()) selfMaskCandidate = voice; break; } diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 4a0fc5b0..27323c6d 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -97,6 +97,7 @@ void sfz::Voice::startVoice(Region* region, int delay, const TriggerEvent& event return; } speedRatio = static_cast(currentPromise->sampleRate / this->sampleRate); + sourcePosition = region->getOffset(currentPromise->oversamplingFactor); } // do Scala retuning and reconvert the frequency into a 12TET key number @@ -123,7 +124,6 @@ void sfz::Voice::startVoice(Region* region, int delay, const TriggerEvent& event equalizers[i].setup(*region, i, triggerEvent.value); } - sourcePosition = region->getOffset(); triggerDelay = delay; initialDelay = delay + static_cast(region->getDelay() * sampleRate); baseFrequency = resources.tuning.getFrequencyOfKey(triggerEvent.number); @@ -856,11 +856,6 @@ bool sfz::Voice::releasedOrFree() const noexcept return state != State::playing || egAmplitude.isReleased(); } -uint32_t sfz::Voice::getSourcePosition() const noexcept -{ - return sourcePosition; -} - void sfz::Voice::setMaxFiltersPerVoice(size_t numFilters) { if (numFilters == filters.size()) diff --git a/src/sfizz/Voice.h b/src/sfizz/Voice.h index 9d5bfceb..70e5fb74 100644 --- a/src/sfizz/Voice.h +++ b/src/sfizz/Voice.h @@ -248,12 +248,6 @@ public: * @return float */ float getAveragePower() const noexcept; - /** - * @brief Get the position of the voice in the source, in samples - * - * @return uint32_t - */ - uint32_t getSourcePosition() const noexcept; /** * Returns the region that is currently playing. May be null if the voice is not active! *