diff --git a/plugins/Synchro/SynchroSynth.cpp b/plugins/Synchro/SynchroSynth.cpp index 595271c4ad8..27cb614121c 100644 --- a/plugins/Synchro/SynchroSynth.cpp +++ b/plugins/Synchro/SynchroSynth.cpp @@ -282,12 +282,14 @@ void SynchroSynth::generalChanged() int octaveDiff = m_carrierDetune.value() - m_modulatorDetune.value(); float pitchDifference = powf(2, octaveDiff); float phase = (float)i / (float)SYNCHRO_GRAPH_SAMPLES * F_2PI; + while (phase >= F_2PI) { phase -= F_2PI; } float phaseMod = SynchroWaveform(phase, m_modulatorDrive.value(), m_modulatorSync.value(), m_modulatorChop.value(), m_harmonics.value()) * m_modulationStrength.value() * m_modulation.value() * SYNCHRO_PM_CONST; - m_resultGraph.setSampleAt(i, SynchroWaveform(phase + phaseMod * - pitchDifference, m_carrierDrive.value(), m_carrierSync.value(), + phase = phase + phaseMod * pitchDifference; + while (phase >= F_2PI) { phase -= F_2PI; } + m_resultGraph.setSampleAt(i, SynchroWaveform(phase, m_carrierDrive.value(), m_carrierSync.value(), m_carrierChop.value(), 0)); } }