diff --git a/src/common/dsp/oscillators/SineOscillator.cpp b/src/common/dsp/oscillators/SineOscillator.cpp index c429fc7d6f2..6776185402d 100644 --- a/src/common/dsp/oscillators/SineOscillator.cpp +++ b/src/common/dsp/oscillators/SineOscillator.cpp @@ -628,7 +628,7 @@ void SineOscillator::process_block_internal(float pitch, float drift, float fmde fv = limit_range(fv, -1.0e6f, 1.0e6f); FMdepth.newValue(fv); - FB.newValue(abs(fb_val)); + FB.newValue(fb_val); float p alignas(16)[MAX_UNISON]; float sx alignas(16)[MAX_UNISON]; @@ -684,8 +684,8 @@ void SineOscillator::process_block_internal(float pitch, float drift, float fmde float fmpd = FM ? FMdepth.v * master_osc[k] : 0.f; auto fmpds = _mm_set1_ps(fmpd); - auto fbv = _mm_set1_ps(FB.v); - auto fbnegmask = _mm_cmplt_ps(fbv, _mm_setzero_ps()); + auto fbv = _mm_set1_ps(std::fabs(FB.v)); + auto fbnegmask = _mm_cmplt_ps(_mm_set1_ps(FB.v), _mm_setzero_ps()); for (int u = 0; u < n_unison; u += 4) {