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;