From fcb94c47187b7600f02a72bb99205ba1c8e4aa57 Mon Sep 17 00:00:00 2001 From: "Robin E. R. Davies" Date: Tue, 20 Jan 2026 17:58:54 -0500 Subject: [PATCH] Stereo EQS. Toob CRV bypass settings in snapshots. --- src/PiPedalModel.cpp | 47 ++++++++++++++++++++--- vite/src/pipedal/ControlViewFactory.tsx | 4 +- vite/src/pipedal/PiPedalModel.tsx | 2 +- vite/src/pipedal/ToobParametricEqView.tsx | 18 ++++++++- 4 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index 26f6ff2..7e9f4ff 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -2060,6 +2060,26 @@ void PiPedalModel::UpdateDefaults(SnapshotValue&snapshotValue, const PedalboardI } if (pPlugin) { + // Fix incorrect bypass settings presint in Pipedal < 1.5.96 + for (size_t i = 0; i < pPlugin->ports().size(); ++i) + { + auto& port = pPlugin->ports()[i]; + if (port->is_bypass() && port->is_control_port() && port->is_input()) + { + ControlValue* pValue = snapshotValue.GetControlValue(port->symbol()); + float value = snapshotValue.isEnabled_ ? 1.0f : 0.0f; + + if (pValue == nullptr) + { + snapshotValue.controlValues_.push_back( + pipedal::ControlValue(port->symbol().c_str(), value)); + } + else + { + pValue->value(value); + } + } + } //////// PLUGIN SPECIFIC UPGRADES ////////////////////// if (pPlugin->uri() == "http://two-play.com/plugins/toob-nam") { @@ -2172,12 +2192,29 @@ void PiPedalModel::UpdateDefaults(PedalboardItem *pedalboardItem, std::unordered if (port->is_control_port() && port->is_input()) { - ControlValue *pValue = pedalboardItem->GetControlValue(port->symbol()); - if (pValue == nullptr) + if (port->is_bypass()) { - // Missing? Set it to default value. - pedalboardItem->controlValues().push_back( - pipedal::ControlValue(port->symbol().c_str(), port->default_value())); + // retroactively correct bug in version of PiPedal prior to 1.5.96. + ControlValue *pValue = pedalboardItem->GetControlValue(port->symbol()); + float value = pedalboardItem->isEnabled() ? 1.0f: 0.0f; + + if (pValue == nullptr) + { + pedalboardItem->controlValues().push_back( + pipedal::ControlValue(port->symbol().c_str(), value)); + } else { + pValue->value(value); + } + + + } else { + ControlValue *pValue = pedalboardItem->GetControlValue(port->symbol()); + if (pValue == nullptr) + { + // Missing? Set it to default value. + pedalboardItem->controlValues().push_back( + pipedal::ControlValue(port->symbol().c_str(), port->default_value())); + } } } } diff --git a/vite/src/pipedal/ControlViewFactory.tsx b/vite/src/pipedal/ControlViewFactory.tsx index 1f00945..0de9746 100644 --- a/vite/src/pipedal/ControlViewFactory.tsx +++ b/vite/src/pipedal/ControlViewFactory.tsx @@ -33,6 +33,7 @@ import ToobMLViewFactory from './ToobMLView'; import ToobPlayerFactory from './ToobPlayerView'; import ToobNamViewFactory from './ToobNamView'; import ToobParametericEqViewFactory from './ToobParametricEqView'; +import {ToobParametricEqViewFactoryStereo} from './ToobParametricEqView'; let pluginFactories: IControlViewFactory[] = [ @@ -42,7 +43,8 @@ let pluginFactories: IControlViewFactory[] = [ new ToobMLViewFactory(), new ToobPlayerFactory(), new ToobNamViewFactory(), - new ToobParametericEqViewFactory() + new ToobParametericEqViewFactory(), + new ToobParametricEqViewFactoryStereo(), ]; diff --git a/vite/src/pipedal/PiPedalModel.tsx b/vite/src/pipedal/PiPedalModel.tsx index 4a19e9b..aaa0152 100644 --- a/vite/src/pipedal/PiPedalModel.tsx +++ b/vite/src/pipedal/PiPedalModel.tsx @@ -1759,7 +1759,7 @@ export class PiPedalModel //implements PiPedalModel if (pluginInfo !== null) { for (let uiControl of pluginInfo.controls) { if (uiControl.is_bypass) { - this._setPedalboardControlValue(instanceId, uiControl.symbol, value ? 0.0 : 1.0, false); + this._setPedalboardControlValue(instanceId, uiControl.symbol, value ? 1.0 : 0.0, false); } } } diff --git a/vite/src/pipedal/ToobParametricEqView.tsx b/vite/src/pipedal/ToobParametricEqView.tsx index 1bc64cf..7bced53 100644 --- a/vite/src/pipedal/ToobParametricEqView.tsx +++ b/vite/src/pipedal/ToobParametricEqView.tsx @@ -736,5 +736,19 @@ class ToobParametricEqViewFactory implements IControlViewFactory { } -} -export default ToobParametricEqViewFactory; \ No newline at end of file +}; +export default ToobParametricEqViewFactory; + +class ToobParametricEqViewFactoryStereo implements IControlViewFactory { + uri: string = "http://two-play.com/plugins/toob-parametric-eq-stereo"; + + Create(model: PiPedalModel, pedalboardItem: PedalboardItem): React.ReactNode { + return (); + } + + +}; + +export { ToobParametricEqViewFactoryStereo }; + +