From 3e61f313e1c76a301f867e1586340b1884b469a4 Mon Sep 17 00:00:00 2001 From: jatinchowdhury18 Date: Sun, 2 Mar 2025 13:01:04 -0800 Subject: [PATCH] Still process MIDI Modulator when output is not connected (#375) --- src/processors/BaseProcessor.cpp | 15 ++++++++++++++- src/processors/BaseProcessor.h | 3 ++- src/processors/chain/ProcessorChain.cpp | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/processors/BaseProcessor.cpp b/src/processors/BaseProcessor.cpp index 3282194e..4564d84d 100644 --- a/src/processors/BaseProcessor.cpp +++ b/src/processors/BaseProcessor.cpp @@ -383,7 +383,20 @@ juce::Point BaseProcessor::getPosition (juce::Rectangle parentBounds) return (editorPosition * juce::Point { (float) parentBounds.getWidth(), (float) parentBounds.getHeight() }).toInt(); } -bool BaseProcessor::isOutputModulationPortConnected() +bool BaseProcessor::onlyHasModulationOutput() const +{ + if (getProcessorType() != Modulation) + return false; + + for (int portIdx = 0; portIdx < getNumOutputs(); ++portIdx) + { + if (getOutputPortType (portIdx) != PortType::modulation) + return false; + } + return true; +} + +bool BaseProcessor::isOutputModulationPortConnected() const { if (getProcessorType() != Modulation) return false; diff --git a/src/processors/BaseProcessor.h b/src/processors/BaseProcessor.h index 711b997a..02ffc7fa 100644 --- a/src/processors/BaseProcessor.h +++ b/src/processors/BaseProcessor.h @@ -189,7 +189,8 @@ class BaseProcessor : private JuceProcWrapper int getForwardingParameterSlotIndex() const noexcept { return forwardingParamsSlotIndex; } void setForwardingParameterSlotIndex (int index) { forwardingParamsSlotIndex = index; } - bool isOutputModulationPortConnected(); + bool onlyHasModulationOutput() const; + bool isOutputModulationPortConnected() const; const std::vector* getParametersToDisableWhenInputIsConnected (int portIndex) const noexcept; const std::vector* getParametersToEnableWhenInputIsConnected (int portIndex) const noexcept; diff --git a/src/processors/chain/ProcessorChain.cpp b/src/processors/chain/ProcessorChain.cpp index 80ead77b..f46fac29 100644 --- a/src/processors/chain/ProcessorChain.cpp +++ b/src/processors/chain/ProcessorChain.cpp @@ -214,7 +214,8 @@ void ProcessorChain::processAudio (AudioBuffer& buffer, const MidiBuffer& // process standalone modulation ports auto noInputsConnected = processor->getNumInputConnections() == 0; auto modOutputConnected = processor->isOutputModulationPortConnected(); - if (noInputsConnected && modOutputConnected) + auto onlyModOut = processor->onlyHasModulationOutput(); + if (noInputsConnected && (modOutputConnected || onlyModOut)) runProcessor (processor, inputBuffer, outProcessed); }