diff --git a/CHANGELOG.md b/CHANGELOG.md index e6bf036..0869697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## v2.8.2 * EvenVCO * Upsample Hard Sync and FM inputs + * Fix bug when DC option was disabled ## v2.8.1 * Noise Plethora diff --git a/src/EvenVCO.cpp b/src/EvenVCO.cpp index 3de3aa5..7023eae 100644 --- a/src/EvenVCO.cpp +++ b/src/EvenVCO.cpp @@ -218,12 +218,12 @@ struct EvenVCO : Module { if (outputs[SQUARE_OUTPUT].isConnected()) { - float_4 dpwOrder1 = simd::ifelse(phase[c / 4] < pw, -1.0, +1.0); - dpwOrder1 -= removePulseDC ? 2.f * (0.5f - pw) : 0.f; + float_4 dpwOrder1 = simd::ifelse(phase[c / 4] < pw, +1.0, -1.0); + dpwOrder1 += removePulseDC ? 2.f * (0.5f - pw) : 0.f; float_4 saw = aliasSuppressedSaw(phases); float_4 sawOffset = aliasSuppressedOffsetSaw(phases, pw); - float_4 dpwOrder3 = (saw - sawOffset) * denominatorInv + pulseDCOffset; + float_4 dpwOrder3 = (saw - sawOffset) * denominatorInv - pulseDCOffset; osBufferSquare[i] = simd::ifelse(lowFreqRegime, dpwOrder1, dpwOrder3); }