diff --git a/CMakeLists.txt b/CMakeLists.txt index e31b620..5b65780 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 1.4.88 + VERSION 1.4.89 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.4.88-Experimental") +set (DISPLAY_VERSION "PiPedal v1.4.89-Experimental") set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set (CMAKE_INSTALL_PREFIX "/usr/") diff --git a/README.md b/README.md index ed42186..1afc13b 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ -Download: v1.4.88 +Download: v1.4.89 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.4.88 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. New Phaser and Graphic Equalizer plugins. +#### NEW version 1.4.89 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. New Phaser and Graphic Equalizer plugins.   diff --git a/docs/Installing.md b/docs/Installing.md index f59d703..9f9032e 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.4.88](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.88](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.88](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.89](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.89](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.89](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_amd64.deb) -Version 1.4.88 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (aarch64). Download the appropriate package for your platform, and install using the following procedure: +Version 1.4.89 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (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.4.88_arm64.deb + sudo apt-get install ./pipedal_1.4.89_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 c4a3669..42101ac 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -1,4 +1,8 @@ # Release Notes + +## PiPedal 1.4.89 Internal +- Toob Crvb for testing. + ## PiPedal 1.4.88 Alpha - Ubuntu 25.04 experimental release. - Ubutnu 24.04 Hotspot compatibility fix diff --git a/docs/download.md b/docs/download.md index d209811..9994a2c 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.4.88 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.88 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.88 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.88/pipedal_1.4.88_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.89 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.89 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.89 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.89/pipedal_1.4.89_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.4.88_arm64.deb + sudo apt-get install ./pipedal_1.4.89_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/Lv2Effect.cpp b/src/Lv2Effect.cpp index c964222..2b32224 100644 --- a/src/Lv2Effect.cpp +++ b/src/Lv2Effect.cpp @@ -104,6 +104,14 @@ Lv2Effect::Lv2Effect( auto uriNode = lilv_new_uri(pWorld, pedalboardItem.uri().c_str()); const LilvPlugin *pPlugin = lilv_plugins_get_by_uri(plugins, uriNode); + for (auto&port : info->ports()) + { + if (port->is_bypass()) + { + this->bypassControlIndex = port->index(); + break; + } + } lilv_node_free(uriNode); { AutoLilvNode bundleUri = lilv_plugin_get_bundle_uri(pPlugin); @@ -545,7 +553,13 @@ void Lv2Effect::Activate() this->activated = true; this->AssignUnconnectedPorts(); lilv_instance_activate(pInstance); - this->BypassTo(this->bypass ? 1.0f : 0.0f); + if (this->bypassControlIndex == -1) + { + this->BypassDezipperSet(this->bypass ? 1.0f : 0.0f); + } else { + this->BypassDezipperSet(1.0f); + this->controlValues[this->bypassControlIndex] = this->bypass ? 1.0f: 0.0f; + } } void Lv2Effect::UpdateAudioPorts() @@ -835,8 +849,15 @@ void Lv2Effect::ResetOutputAtomBuffer(char *data) header->size = pHost->GetAtomBufferSize() - 8; header->type = urids.atom__Chunk; } +void Lv2Effect::BypassDezipperSet(float targetValue) +{ + this->targetBypass = targetValue; + this->currentBypass = targetValue; + this->currentBypassDx = 0; + this->bypassSamplesRemaining = 0; +} -void Lv2Effect::BypassTo(float targetValue) +void Lv2Effect::BypassDezipperTo(float targetValue) { this->targetBypass = targetValue; double dx = targetValue - this->currentBypass; diff --git a/src/Lv2Effect.hpp b/src/Lv2Effect.hpp index 9878b4a..6dd7c63 100644 --- a/src/Lv2Effect.hpp +++ b/src/Lv2Effect.hpp @@ -101,6 +101,7 @@ namespace pipedal std::vector isInputControlPort; std::vector defaultInputControlValues; std::vector isInputTriggerControlPort;; + int bypassControlIndex = -1; virtual std::string GetUri() const { return info->uri(); } @@ -185,6 +186,8 @@ namespace pipedal const void *data); + int GetBypassControlPort() const { return bypassControlIndex; } + void ResetInputAtomBuffer(char*data); void ResetOutputAtomBuffer(char*data); @@ -202,7 +205,9 @@ namespace pipedal int actualAudioInputs = 0; int actualAudioOutputs = 0; std::vector> outputMixBuffers; - void BypassTo(float value); + void BypassDezipperTo(float value); + void BypassDezipperSet(float value); + bool borrowedEffect = false; bool activated = false; @@ -329,7 +334,11 @@ namespace pipedal if (bypass != this->bypass) { this->bypass = bypass; - BypassTo(bypass? 1.0f: 0.0f); + if (bypassControlIndex == -1) { + BypassDezipperTo(bypass? 1.0f: 0.0f); + } else { + controlValues[bypassControlIndex] = bypass? 1.0f: 0.0f; + } } } diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 673797f..c7b8f51 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -33,6 +33,8 @@ #include "JackConfiguration.hpp" #include "lv2/urid/urid.h" #include "lv2/ui/ui.h" +#include "lv2/core/lv2.h" + // #include "lv2.h" #include "lv2/atom/atom.h" #include "lv2/time/time.h" @@ -1224,6 +1226,7 @@ Lv2PortInfo::Lv2PortInfo(PluginHost *host, const LilvPlugin *plugin, const LilvP AutoLilvNode designationValue = lilv_port_get(plugin, pPort, host->lilvUris->core__designation); designation_ = nodeAsString(designationValue); + is_bypass_ = designation_ == LV2_CORE__enabled; AutoLilvNode portGroup_value = lilv_port_get(plugin, pPort, host->lilvUris->portgroups__group); port_group_ = nodeAsString(portGroup_value); @@ -1957,6 +1960,7 @@ json_map::storage_type Lv2PortInfo::jmap{ MAP_REF(Lv2PortInfo, not_on_gui), MAP_REF(Lv2PortInfo, buffer_type), MAP_REF(Lv2PortInfo, port_group), + MAP_REF(Lv2PortInfo, is_bypass), MAP_REF(Lv2PortInfo, pipedal_ledColor), json_map::enum_reference("units", &Lv2PortInfo::units_, get_units_enum_converter()), diff --git a/src/PluginHost.hpp b/src/PluginHost.hpp index f4c7de1..2cdb9cb 100644 --- a/src/PluginHost.hpp +++ b/src/PluginHost.hpp @@ -231,6 +231,7 @@ namespace pipedal std::string port_group_; std::string designation_; + bool is_bypass_ = false; Units units_ = Units::none; std::string comment_; PiPedalUI::ptr piPedalUI_; @@ -280,6 +281,7 @@ namespace pipedal LV2_PROPERTY_GETSET_SCALAR(min_value); LV2_PROPERTY_GETSET_SCALAR(max_value); LV2_PROPERTY_GETSET_SCALAR(default_value); + LV2_PROPERTY_GETSET_SCALAR(is_bypass); LV2_PROPERTY_GETSET_SCALAR(is_input); LV2_PROPERTY_GETSET_SCALAR(is_output); @@ -594,7 +596,9 @@ namespace pipedal } } } - is_bypass_ = name_ == "bypass" || name_ == "Bypass" || symbol_ == "bypass" || symbol_ == "Bypass"; + is_bypass_ = + pPort->is_bypass() || + name_ == "bypass" || name_ == "Bypass" || symbol_ == "bypass" || symbol_ == "Bypass"; } private: diff --git a/vite/src/pipedal/Lv2Plugin.tsx b/vite/src/pipedal/Lv2Plugin.tsx index 19a2fcb..9ae3a32 100644 --- a/vite/src/pipedal/Lv2Plugin.tsx +++ b/vite/src/pipedal/Lv2Plugin.tsx @@ -728,7 +728,7 @@ export class UiControl implements Deserializable { } isHidden(): boolean { - return this.not_on_gui || (this.connection_optional && !this.is_input); + return this.is_bypass || this.not_on_gui || (this.connection_optional && !this.is_input); } isOnOffSwitch(): boolean { return this.controlType === ControlType.OnOffSwitch;