From 016e36c390f9ba4818b5cde717ab1406bf525194 Mon Sep 17 00:00:00 2001 From: "Robin E. R. Davies" Date: Fri, 16 Jan 2026 11:44:11 -0500 Subject: [PATCH] Correct bypass handling in snapshots. --- src/PiPedalModel.cpp | 11 +++++++++++ src/PluginHost.cpp | 13 +++++++++++++ src/PluginHost.hpp | 1 + 3 files changed, 25 insertions(+) diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index 70adb50..26f6ff2 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -671,6 +671,17 @@ void PiPedalModel::SetPedalboardItemEnable(int64_t clientId, int64_t pedalItemId std::lock_guard guard{mutex}; { this->pedalboard.SetItemEnabled(pedalItemId, enabled); + PedalboardItem * pPedalboardItem = this->pedalboard.GetItem(pedalItemId); + if (pPedalboardItem) { + Lv2PluginInfo::ptr pluginInfo = GetPluginInfo(pPedalboardItem->uri()); + if (pluginInfo) { + for (auto &port: pluginInfo->ports()) { + if (port->is_bypass()) { + pPedalboardItem->SetControlValue(port->symbol(), enabled? 1.0: 0.0f); + } + } + } + } // Notify clients. std::vector t{subscribers.begin(), subscribers.end()}; diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 60ddc35..6973a5b 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -2246,6 +2246,19 @@ bool Lv2PluginInfo::WantsWorkerThread() const { return contains(this->required_features_, LV2_WORKER__schedule) || contains(this->supported_features_, LV2_WORKER__schedule); } + +uint32_t Lv2PluginInfo::getBypassPortIndex() const +{ + for (const auto &port : ports_) + { + if (port->is_bypass()) + { + return port->index(); + } + } + return (uint32_t)-1; +} + // void PiPedalHostLogError(const std::string &error) // { // Lv2Log::error("%s",error.c_str()); diff --git a/src/PluginHost.hpp b/src/PluginHost.hpp index ef9e220..9e0abec 100644 --- a/src/PluginHost.hpp +++ b/src/PluginHost.hpp @@ -527,6 +527,7 @@ namespace pipedal } } bool IsPathProperty(const std::string &uri) const; + uint32_t getBypassPortIndex() const; public: virtual ~Lv2PluginInfo();