diff --git a/plugins/Cardinal/src/HostAudio.cpp b/plugins/Cardinal/src/HostAudio.cpp index 384e5b9..482a8f4 100644 --- a/plugins/Cardinal/src/HostAudio.cpp +++ b/plugins/Cardinal/src/HostAudio.cpp @@ -157,7 +157,7 @@ struct HostAudio2 : HostAudio<2> { void processTerminalOutput(const ProcessArgs&) override { - if (!in1connected && !in2connected) + if (pcontext->bypassed || (!in1connected && !in2connected)) { #ifndef HEADLESS if (resetMeters) @@ -258,6 +258,9 @@ struct HostAudio8 : HostAudio<8> { void processTerminalOutput(const ProcessArgs&) override { + if (pcontext->bypassed) + return; + const uint32_t bufferSize = pcontext->bufferSize; // only incremented on output diff --git a/plugins/Cardinal/src/HostCV.cpp b/plugins/Cardinal/src/HostCV.cpp index 9626219..7f23b47 100644 --- a/plugins/Cardinal/src/HostCV.cpp +++ b/plugins/Cardinal/src/HostCV.cpp @@ -26,6 +26,7 @@ USE_NAMESPACE_DISTRHO; struct HostCV : TerminalModule { CardinalPluginContext* const pcontext; + bool bypassed = false; int dataFrame = 0; uint32_t lastProcessCounter = 0; @@ -70,6 +71,7 @@ struct HostCV : TerminalModule { // only checked on input if (lastProcessCounter != processCounter) { + bypassed = isBypassed(); dataFrame = 0; lastProcessCounter = processCounter; } @@ -78,7 +80,7 @@ struct HostCV : TerminalModule { const uint32_t k = dataFrame; DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,); - if (isBypassed()) + if (bypassed) { for (int i=0; i<10; ++i) outputs[i].setVoltage(0.0f); @@ -100,7 +102,7 @@ struct HostCV : TerminalModule { void processTerminalOutput(const ProcessArgs&) override { - if (pcontext->variant != kCardinalVariantMain) + if (pcontext->variant != kCardinalVariantMain || pcontext->bypassed) return; const uint32_t bufferSize = pcontext->bufferSize; @@ -109,7 +111,7 @@ struct HostCV : TerminalModule { const uint32_t k = dataFrame++; DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,); - if (isBypassed()) + if (bypassed) return; float** const dataOuts = pcontext->dataOuts;