Use the phase helper

This commit is contained in:
Paul Ferrand 2020-03-28 20:11:17 +01:00
parent b223fb5e4f
commit dabb7ead9f

View file

@ -58,9 +58,11 @@ void sfz::Voice::startVoice(Region* region, int delay, int number, uint8_t value
break;
}
waveOscillator.setWavetable(wave);
waveOscillator.setPhase(region->getPhase());
} else if (region->oscillator) {
const WavetableMulti* wave = resources.wavePool.getFileWave(region->sample);
waveOscillator.setWavetable(wave);
waveOscillator.setPhase(region->getPhase());
} else {
currentPromise = resources.filePool.getFilePromise(region->sample);
if (currentPromise == nullptr) {
@ -70,19 +72,6 @@ void sfz::Voice::startVoice(Region* region, int delay, int number, uint8_t value
speedRatio = static_cast<float>(currentPromise->sampleRate / this->sampleRate);
}
if (region->oscillator || region->isGenerator()) {
float phase;
const float phaseParam = region->oscillatorPhase;
if (phaseParam >= 0) {
phase = phaseParam * (1.0f / 360.0f);
phase -= static_cast<int>(phase);
} else {
std::uniform_real_distribution<float> phaseDist { 0.0001f, 0.9999f };
phase = phaseDist(Random::randomGenerator);
}
waveOscillator.setPhase(phase);
}
pitchRatio = region->getBasePitchVariation(number, value);
baseVolumedB = region->getBaseVolumedB(number);