From c100ad1aa517c1b783afe3b7ef13d02799583624 Mon Sep 17 00:00:00 2001 From: "Robin E. R. Davies" Date: Mon, 8 Sep 2025 02:02:56 -0400 Subject: [PATCH] v1.5.91 --- CMakeLists.txt | 4 +-- README.md | 4 +-- docs/Installing.md | 10 +++--- docs/ReleaseNotes.md | 2 +- docs/download.md | 8 ++--- src/Pedalboard.hpp | 24 ++++++++++++++ src/PiPedalModel.cpp | 76 ++++++++++++++++++++++++++++++++++++++++---- src/PiPedalModel.hpp | 1 + 8 files changed, 109 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 723c152..1b9c992 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 1.5.90 + VERSION 1.5.91 DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi" HOMEPAGE_URL "https://rerdavies.github.io/pipedal" ) execute_process( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE ) -set (DISPLAY_VERSION "PiPedal v1.5.90-Experimental") +set (DISPLAY_VERSION "PiPedal v1.5.91-Experimental") set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set (CMAKE_INSTALL_PREFIX "/usr/") diff --git a/README.md b/README.md index bbee7a6..942c565 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ -Download: v1.5.90 +Download: v1.5.91 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal). Documentation: [https://rerdavies.github.io/pipedal/Documentation.html](https://rerdavies.github.io/pipedal/Documentation.html). -#### NEW version 1.5.90 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. TooB NAM calibration, manipulation of i/r files in Toob Convolution Reverb, new Parametric EQ and 3 Band EQ plugins, and MORE! +#### NEW version 1.5.91 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. TooB NAM calibration, manipulation of i/r files in Toob Convolution Reverb, new Parametric EQ and 3 Band EQ plugins, and MORE!   diff --git a/docs/Installing.md b/docs/Installing.md index 44de63d..ee33e09 100644 --- a/docs/Installing.md +++ b/docs/Installing.md @@ -13,18 +13,18 @@ page_icon: img/Install4.jpg Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v1.5.90](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_arm64.deb) -- [Ubuntu 24.04 through 25.04 (aarch64) v1.5.90](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_arm64.deb) -- [Ubuntu 24.04 through 25.04 (amd64) v1.5.90](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.5.91](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_arm64.deb) +- [Ubuntu 24.04 through 25.04 (aarch64) v1.5.91](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_arm64.deb) +- [Ubuntu 24.04 through 25.04 (amd64) v1.5.91](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_amd64.deb) -Version 1.5.90 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), Ubuntu 24.10 (aarch64), and Ubuntu 25.04 (aarch64). Download the appropriate package for your platform, and install using the following procedure: +Version 1.5.91 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), Ubuntu 24.10 (aarch64), and Ubuntu 25.04 (aarch64). Download the appropriate package for your platform, and install using the following procedure: ``` sudo apt update sudo apt upgrade cd ~/Downloads - sudo apt-get install ./pipedal_1.5.90_arm64.deb + sudo apt-get install ./pipedal_1.5.91_arm64.deb ``` You MUST use `apt-get`. `apt` will not install downloaded packages; and `dpkg -i` will not install dependencies. diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index 6897a8d..8975e07 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -1,6 +1,6 @@ # Release Notes -## PiPedal 1.5.90 Beta (Release Candidate) +## PiPedal 1.5.91 Beta (Release Candidate) #### Themes for this release diff --git a/docs/download.md b/docs/download.md index 0ae5eba..6a985e6 100644 --- a/docs/download.md +++ b/docs/download.md @@ -4,9 +4,9 @@ Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v1.5.90 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.5.90 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_arm64.deb) -- [Ubuntu 24.x (amd64) v1.5.90 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.5.90/pipedal_1.5.90_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.5.91 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_arm64.deb) +- [Ubuntu 24.x, 25.04 (aarch64) v1.5.91 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_arm64.deb) +- [Ubuntu 24.x, 25.04 (amd64) v1.5.91 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.5.91/pipedal_1.5.91_amd64.deb) Install the package by running @@ -14,7 +14,7 @@ Install the package by running ``` sudo apt update cd ~/Downloads - sudo apt-get install ./pipedal_1.5.90_arm64.deb + sudo apt-get install ./pipedal_1.5.91_arm64.deb ``` You MUST use `apt-get` to install the package. `apt install` will NOT install the package correctly. The message about missing permissions given by `apt-get` is expected, and can be safely ignored. diff --git a/src/Pedalboard.hpp b/src/Pedalboard.hpp index 18bc24f..4363d3c 100644 --- a/src/Pedalboard.hpp +++ b/src/Pedalboard.hpp @@ -72,6 +72,12 @@ public: , value_(value) { + } + ControlValue(const std::string&key, float value) + :key_(key) + , value_(value) + { + } GETTER_SETTER_REF(key) GETTER_SETTER_REF(value) @@ -174,6 +180,24 @@ public: Lv2PluginState lv2State_; std::map pathProperties_; DECLARE_JSON_MAP(SnapshotValue); + + ControlValue*GetControlValue(const std::string& key) { + for (ControlValue&controlValue: controlValues_) { + if (controlValue.key() == key) { + return &controlValue; + } + } + return nullptr; + } + void SetControlValue(const std::string& key,float value) { + for (ControlValue&controlValue: controlValues_) { + if (controlValue.key() == key) { + controlValue.value(value); + return; + } + } + controlValues_.push_back(ControlValue{key,value}); + } }; diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index 21c9eb7..b36ba98 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -2033,6 +2033,69 @@ std::shared_ptr PiPedalModel::GetPluginInfo(const std::string &ur return pluginHost.GetPluginInfo(uri); } + +void PiPedalModel::UpdateDefaults(SnapshotValue&snapshotValue, const PedalboardItem*pedalboardItem_) +{ + std::shared_ptr pPlugin = pluginHost.GetPluginInfo(pedalboardItem_->uri()); + if (!pPlugin) + { + if (pedalboardItem_->uri() == SPLIT_PEDALBOARD_ITEM_URI) + { + pPlugin = GetSplitterPluginInfo(); + } + } + if (pPlugin) + { + //////// PLUGIN SPECIFIC UPGRADES ////////////////////// + if (pPlugin->uri() == "http://two-play.com/plugins/toob-nam") + { + ControlValue *pVersion = snapshotValue.GetControlValue("version"); + if (pVersion == nullptr) { + ControlValue *pValue = snapshotValue.GetControlValue("inputCalibrationMode"); + if (pValue == nullptr) + { + // calibration is OFF when upgradfing. + snapshotValue.SetControlValue("inputCalibrationMode", 0.0f); + } + // convert old gate threshold to new gate threshold. + ControlValue *pGateValue = snapshotValue.GetControlValue("gate"); + if (pGateValue) { + float value = pGateValue->value(); + // Is the gate disabled? + if (value <= -100.0f) + { + value = -120.0f; // "disabled in new range." + } else { + value = value * 0.5; // correct the bug in original implementation. + } + snapshotValue.SetControlValue("gate", value); + } + snapshotValue.SetControlValue("version", 0.0f); + } + } + if (pPlugin->piPedalUI()) + { + PiPedalUI::ptr piPedalUI = pPlugin->piPedalUI(); + std::set validFileProperties; + for (auto &fileProperty : piPedalUI->fileProperties()) + { + validFileProperties.insert(fileProperty->patchProperty()); + } + for (auto i = snapshotValue.pathProperties_.begin(); i != snapshotValue.pathProperties_.end(); /**/) + { + if (!validFileProperties.contains(i->first)) + { + i = snapshotValue.pathProperties_.erase(i); + } + else + { + ++i; + } + } + } + } +} + void PiPedalModel::UpdateDefaults(PedalboardItem *pedalboardItem, std::unordered_map &itemMap) { itemMap[pedalboardItem->instanceId()] = pedalboardItem; @@ -2161,9 +2224,9 @@ void PiPedalModel::UpdateDefaults(Snapshot *snapshot, std::unordered_mapvalues_.erase(snapshot->values_.begin() + i); --i; + } else { + UpdateDefaults(value, f->second); } - // missing values in snapshots get filled in with plugin defaults at load time, - // so we don't need to actually populate the missing values. } for (auto &snapshotValue : snapshot->values_) { @@ -2174,11 +2237,12 @@ void PiPedalModel::UpdateDefaults(Pedalboard *pedalboard) { // add missing values. std::unordered_map itemMap; - for (size_t i = 0; i < pedalboard->GetAllPlugins().size(); ++i) + auto allPlugins = pedalboard->GetAllPlugins(); + for (size_t i = 0; i < allPlugins.size(); ++i) { - UpdateDefaults(&(pedalboard->items()[i]), itemMap); + UpdateDefaults(allPlugins[i], itemMap); } - // set all missiong values on snapshots to default values. + // set all missing values on snapshots to default values. for (auto snapshot : pedalboard->snapshots()) { if (snapshot) @@ -2190,7 +2254,7 @@ void PiPedalModel::UpdateDefaults(Pedalboard *pedalboard) PluginPresets PiPedalModel::GetPluginPresets(const std::string &pluginUri) { - std::lock_guard lock(mutex); + std::lock_guard lock(mutex); return storage.GetPluginPresets(pluginUri); } diff --git a/src/PiPedalModel.hpp b/src/PiPedalModel.hpp index 3e4c86c..ebf3eae 100644 --- a/src/PiPedalModel.hpp +++ b/src/PiPedalModel.hpp @@ -207,6 +207,7 @@ namespace pipedal void FireBanksChanged(int64_t clientId); void FireJackConfigurationChanged(const JackConfiguration &jackConfiguration); void FireLv2StateChanged(int64_t instanceId, const Lv2PluginState &lv2State); + void UpdateDefaults(SnapshotValue&snapshotValue, const PedalboardItem*pedalboardItem); void UpdateDefaults(Snapshot *snapshot, std::unordered_map &itemMap); void UpdateDefaults(PedalboardItem *pedalboardItem, std::unordered_map &itemMap); void UpdateDefaults(Pedalboard *pedalboard);