From 5e2473b6e9baa3d5c2a7876fc9497ede73402725 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 8 Feb 2022 03:29:51 +0000 Subject: [PATCH] Forgot some tweaks on host cv module, now latency tested too Signed-off-by: falkTX --- plugins/Cardinal/src/HostAudio.cpp | 4 +-- plugins/Cardinal/src/HostCV.cpp | 53 ++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/plugins/Cardinal/src/HostAudio.cpp b/plugins/Cardinal/src/HostAudio.cpp index 1098336..14a9a4c 100644 --- a/plugins/Cardinal/src/HostAudio.cpp +++ b/plugins/Cardinal/src/HostAudio.cpp @@ -76,8 +76,6 @@ struct HostAudio : TerminalModule { void processTerminalInput(const ProcessArgs&) override { - const float* const* const dataIns = pcontext->dataIns; - const int blockFrames = pcontext->engine->getBlockFrames(); const int64_t blockFrame = pcontext->engine->getBlockFrame(); @@ -98,7 +96,7 @@ struct HostAudio : TerminalModule { for (int i=0; idataIns) { for (int i=0; ivariant != kCardinalVariantMain) return; - const float* const* const dataIns = pcontext->dataIns; - float** const dataOuts = pcontext->dataOuts; - const int64_t blockFrame = pcontext->engine->getBlockFrame(); + // only checked on input if (lastBlockFrame != blockFrame) { dataFrame = 0; lastBlockFrame = blockFrame; } + // only incremented on output + const int k = dataFrame; + DISTRHO_SAFE_ASSERT_RETURN(k < pcontext->engine->getBlockFrames(),); + + if (isBypassed()) + { + for (int i=0; i<10; ++i) + outputs[i].setVoltage(0.0f); + } + else if (const float* const* const dataIns = pcontext->dataIns) + { + float outputOffset; + outputOffset = params[BIPOLAR_OUTPUTS_1_5].getValue() > 0.1f ? 5.0f : 0.0f; + + for (int i=0; i<5; ++i) + outputs[i].setVoltage(dataIns[i+CARDINAL_AUDIO_IO_OFFSET][k] - outputOffset); + + outputOffset = params[BIPOLAR_OUTPUTS_6_10].getValue() > 0.1f ? 5.0f : 0.0f; + + for (int i=5; i<10; ++i) + outputs[i].setVoltage(dataIns[i+CARDINAL_AUDIO_IO_OFFSET][k] - outputOffset); + } + } + + void processTerminalOutput(const ProcessArgs&) override + { + if (pcontext->variant != kCardinalVariantMain) + return; + + // only incremented on output const int k = dataFrame++; DISTRHO_SAFE_ASSERT_RETURN(k < pcontext->engine->getBlockFrames(),); if (isBypassed()) return; - float inputOffset, outputOffset; + float** const dataOuts = pcontext->dataOuts; + + float inputOffset; inputOffset = params[BIPOLAR_INPUTS_1_5].getValue() > 0.1f ? 5.0f : 0.0f; - outputOffset = params[BIPOLAR_OUTPUTS_1_5].getValue() > 0.1f ? 5.0f : 0.0f; for (int i=0; i<5; ++i) - { - outputs[i].setVoltage(dataIns[i+CARDINAL_AUDIO_IO_OFFSET][k] - outputOffset); - dataOuts[i+CARDINAL_AUDIO_IO_OFFSET][k] = inputs[i].getVoltage() + inputOffset; - } + dataOuts[i+CARDINAL_AUDIO_IO_OFFSET][k] += inputs[i].getVoltage() + inputOffset; inputOffset = params[BIPOLAR_INPUTS_6_10].getValue() > 0.1f ? 5.0f : 0.0f; - outputOffset = params[BIPOLAR_OUTPUTS_6_10].getValue() > 0.1f ? 5.0f : 0.0f; for (int i=5; i<10; ++i) - { - outputs[i].setVoltage(dataIns[i+CARDINAL_AUDIO_IO_OFFSET][k] - outputOffset); - dataOuts[i+CARDINAL_AUDIO_IO_OFFSET][k] = inputs[i].getVoltage() + inputOffset; - } + dataOuts[i+CARDINAL_AUDIO_IO_OFFSET][k] += inputs[i].getVoltage() + inputOffset; } - - void processTerminalOutput(const ProcessArgs&) override - {} }; struct HostCVWidget : ModuleWidgetWith8HP {