From d9938b13d88d7bd6341e6c187f92f8b702a5efd4 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 4 Apr 2015 12:43:09 +0200 Subject: [PATCH] Rack: if plugin only has 1 output, copy it to the 2nd --- source/backend/engine/CarlaEngineGraph.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/source/backend/engine/CarlaEngineGraph.cpp b/source/backend/engine/CarlaEngineGraph.cpp index 8c5acd4b1..3890da3eb 100644 --- a/source/backend/engine/CarlaEngineGraph.cpp +++ b/source/backend/engine/CarlaEngineGraph.cpp @@ -793,8 +793,9 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB bool processed = false; - uint32_t oldAudioInCount = 0; - uint32_t oldMidiOutCount = 0; + uint32_t oldAudioInCount = 0; + uint32_t oldAudioOutCount = 0; + uint32_t oldMidiOutCount = 0; // process plugins for (uint i=0; i < data->curPluginCount; ++i) @@ -833,8 +834,9 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB } } - oldAudioInCount = plugin->getAudioInCount(); - oldMidiOutCount = plugin->getMidiOutCount(); + oldAudioInCount = plugin->getAudioInCount(); + oldAudioOutCount = plugin->getAudioOutCount(); + oldMidiOutCount = plugin->getMidiOutCount(); // process plugin->initBuffers(); @@ -848,6 +850,12 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB FloatVectorOperations::add(outBuf[1], inBuf1, iframes); } + // if plugin only has 1 output, copy it to the 2nd + if (oldAudioOutCount == 1) + { + FloatVectorOperations::copy(outBuf[1], outBuf[0], iframes); + } + // set peaks { EnginePluginData& pluginData(data->plugins[i]); @@ -868,7 +876,7 @@ void RackGraph::process(CarlaEngine::ProtectedData* const data, const float* inB pluginData.insPeak[1] = 0.0f; } - if (plugin->getAudioOutCount() > 0) + if (oldAudioOutCount > 0) { range = FloatVectorOperations::findMinAndMax(outBuf[0], iframes); pluginData.outsPeak[0] = carla_maxLimited(std::abs(range.getStart()), std::abs(range.getEnd()), 1.0f);