diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 53066593..75374065 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -65,19 +65,21 @@ void sfz::Voice::startVoice(Region* region, int delay, int number, float value, wave = resources.wavePool.getWaveSaw(); break; } - const int quality = region->oscillatorQuality ? *region->oscillatorQuality : Default::oscillatorQuality; + const float phase = region->getPhase(); + const int quality = region->oscillatorQuality.value_or(Default::oscillatorQuality); for (WavetableOscillator& osc : waveOscillators) { osc.setWavetable(wave); - osc.setPhase(region->getPhase()); + osc.setPhase(phase); osc.setQuality(quality); } setupOscillatorUnison(); } else if (region->oscillator) { const WavetableMulti* wave = resources.wavePool.getFileWave(region->sampleId.filename()); - const int quality = region->oscillatorQuality ? *region->oscillatorQuality : Default::oscillatorQuality; + const float phase = region->getPhase(); + const int quality = region->oscillatorQuality.value_or(Default::oscillatorQuality); for (WavetableOscillator& osc : waveOscillators) { osc.setWavetable(wave); - osc.setPhase(region->getPhase()); + osc.setPhase(phase); osc.setQuality(quality); } setupOscillatorUnison();