Mute audio output if bypassed

This commit is contained in:
falkTX 2022-05-15 00:38:32 +01:00
parent 1cb5fa39d3
commit 879d0862d8
2 changed files with 9 additions and 4 deletions

View file

@ -157,7 +157,7 @@ struct HostAudio2 : HostAudio<2> {
void processTerminalOutput(const ProcessArgs&) override void processTerminalOutput(const ProcessArgs&) override
{ {
if (!in1connected && !in2connected) if (pcontext->bypassed || (!in1connected && !in2connected))
{ {
#ifndef HEADLESS #ifndef HEADLESS
if (resetMeters) if (resetMeters)
@ -258,6 +258,9 @@ struct HostAudio8 : HostAudio<8> {
void processTerminalOutput(const ProcessArgs&) override void processTerminalOutput(const ProcessArgs&) override
{ {
if (pcontext->bypassed)
return;
const uint32_t bufferSize = pcontext->bufferSize; const uint32_t bufferSize = pcontext->bufferSize;
// only incremented on output // only incremented on output

View file

@ -26,6 +26,7 @@ USE_NAMESPACE_DISTRHO;
struct HostCV : TerminalModule { struct HostCV : TerminalModule {
CardinalPluginContext* const pcontext; CardinalPluginContext* const pcontext;
bool bypassed = false;
int dataFrame = 0; int dataFrame = 0;
uint32_t lastProcessCounter = 0; uint32_t lastProcessCounter = 0;
@ -70,6 +71,7 @@ struct HostCV : TerminalModule {
// only checked on input // only checked on input
if (lastProcessCounter != processCounter) if (lastProcessCounter != processCounter)
{ {
bypassed = isBypassed();
dataFrame = 0; dataFrame = 0;
lastProcessCounter = processCounter; lastProcessCounter = processCounter;
} }
@ -78,7 +80,7 @@ struct HostCV : TerminalModule {
const uint32_t k = dataFrame; const uint32_t k = dataFrame;
DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,); DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,);
if (isBypassed()) if (bypassed)
{ {
for (int i=0; i<10; ++i) for (int i=0; i<10; ++i)
outputs[i].setVoltage(0.0f); outputs[i].setVoltage(0.0f);
@ -100,7 +102,7 @@ struct HostCV : TerminalModule {
void processTerminalOutput(const ProcessArgs&) override void processTerminalOutput(const ProcessArgs&) override
{ {
if (pcontext->variant != kCardinalVariantMain) if (pcontext->variant != kCardinalVariantMain || pcontext->bypassed)
return; return;
const uint32_t bufferSize = pcontext->bufferSize; const uint32_t bufferSize = pcontext->bufferSize;
@ -109,7 +111,7 @@ struct HostCV : TerminalModule {
const uint32_t k = dataFrame++; const uint32_t k = dataFrame++;
DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,); DISTRHO_SAFE_ASSERT_RETURN(k < bufferSize,);
if (isBypassed()) if (bypassed)
return; return;
float** const dataOuts = pcontext->dataOuts; float** const dataOuts = pcontext->dataOuts;