Merge pull request #469 from paulfd/oversampling-offset

Oversampling offset
This commit is contained in:
Paul Ferrand 2020-10-04 20:50:42 +02:00 committed by GitHub
commit 4acd1ca8c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 2 additions and 13 deletions

View file

@ -1010,7 +1010,7 @@ void sfz::Synth::checkNotePolyphony(const Region* region, int delay, const Trigg
} }
break; break;
case SfzSelfMask::dontMask: case SfzSelfMask::dontMask:
if (!selfMaskCandidate || selfMaskCandidate->getSourcePosition() < voice->getSourcePosition()) if (!selfMaskCandidate || selfMaskCandidate->getAge() < voice->getAge())
selfMaskCandidate = voice; selfMaskCandidate = voice;
break; break;
} }

View file

@ -97,6 +97,7 @@ void sfz::Voice::startVoice(Region* region, int delay, const TriggerEvent& event
return; return;
} }
speedRatio = static_cast<float>(currentPromise->sampleRate / this->sampleRate); speedRatio = static_cast<float>(currentPromise->sampleRate / this->sampleRate);
sourcePosition = region->getOffset(currentPromise->oversamplingFactor);
} }
// do Scala retuning and reconvert the frequency into a 12TET key number // 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); equalizers[i].setup(*region, i, triggerEvent.value);
} }
sourcePosition = region->getOffset();
triggerDelay = delay; triggerDelay = delay;
initialDelay = delay + static_cast<int>(region->getDelay() * sampleRate); initialDelay = delay + static_cast<int>(region->getDelay() * sampleRate);
baseFrequency = resources.tuning.getFrequencyOfKey(triggerEvent.number); baseFrequency = resources.tuning.getFrequencyOfKey(triggerEvent.number);
@ -856,11 +856,6 @@ bool sfz::Voice::releasedOrFree() const noexcept
return state != State::playing || egAmplitude.isReleased(); return state != State::playing || egAmplitude.isReleased();
} }
uint32_t sfz::Voice::getSourcePosition() const noexcept
{
return sourcePosition;
}
void sfz::Voice::setMaxFiltersPerVoice(size_t numFilters) void sfz::Voice::setMaxFiltersPerVoice(size_t numFilters)
{ {
if (numFilters == filters.size()) if (numFilters == filters.size())

View file

@ -248,12 +248,6 @@ public:
* @return float * @return float
*/ */
float getAveragePower() const noexcept; 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! * Returns the region that is currently playing. May be null if the voice is not active!
* *