diff --git a/CMakeLists.txt b/CMakeLists.txt index 25068c1..6faa786 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 1.4.85 + VERSION 1.4.86 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.85-Experimental") +set (DISPLAY_VERSION "PiPedal v1.4.86-Experimental") set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set (CMAKE_INSTALL_PREFIX "/usr/") diff --git a/README.md b/README.md index 133a1fe..f0305c1 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ -Download: v1.4.85 +Download: v1.4.86 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.85 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. New Phaser and Graphic Equalizer plugins. +#### NEW version 1.4.86 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 7184b0f..955c485 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.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.86](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.86](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.86](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_amd64.deb) -Version 1.4.85 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.86 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.85_arm64.deb + sudo apt-get install ./pipedal_1.4.86_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 791e5b0..a18618f 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -1,8 +1,13 @@ # Release Notes -## Pipedal 1.4.79 Experimental +## PiPedal 1.4.86 Beta +The Big Feature: +- Code optimizations for Raspberry Pi 5 (Cortex-A76), providing a potential 2x performance improvement for TooB Neural Amp Modeler. +- New "Threaded" button optionally executes TooB NAM computation on a separate thread. Allows up to 5 NAM instances on Pi 4, and practically unlimited NAM instances on Pi 5. +- TooB Neural Amp Modeler: Switch to the NeuralAudio NAM Backend Bug fixes: -- Thread-per-plugin-instance for LV2_WORKER threads (see issue #339) -- Fixes for selection issues when modifying pedalboard structure. +- Compatibility with plugins expecting certain MOD host features. +- Improvements to recovery from audio underruns and overruns. +- Fixes for loss of currently selected plugin when modifying pedalboard structure. ## Pipedal 1.4.79 Beta diff --git a/docs/download.md b/docs/download.md index 76088bd..372c013 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.85 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.85 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.85 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.86 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.86 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.86 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.86/pipedal_1.4.86_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.85_arm64.deb + sudo apt-get install ./pipedal_1.4.86_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/lv2/aarch64/ToobAmp.lv2/CabIR.ttl b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl index ec01dab..1a9348a 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabIR.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl @@ -93,7 +93,7 @@ cabir:impulseFile3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ TooB Cab IR is a convolution-based guitar cabinet impulse response simulator. diff --git a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl index 7518928..512f8c0 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl @@ -50,7 +50,7 @@ toob:frequencyResponseVector doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; mod:brand "TooB"; mod:label "TooB CabSim"; diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl index 89fcaac..23918a1 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl @@ -53,7 +53,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Convolution reverb is a notoriously compute-intensive effect. If you are having performance issues, use the Max T control to constrain the length of the impulse file to diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl index 2f14a74..c09b552 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl @@ -51,7 +51,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ diff --git a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl index 51719cf..76ea7d7 100644 --- a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl +++ b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl @@ -66,7 +66,7 @@ inputStage:filterGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; mod:brand "TooB"; mod:label "TooB Input"; diff --git a/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl b/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl index 9a07a38..d6c6c1f 100644 --- a/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl +++ b/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl @@ -68,7 +68,7 @@ pstage:stage3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; mod:brand "TooB"; mod:label "Power Stage"; diff --git a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl index f013049..1a624a1 100644 --- a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl +++ b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl @@ -57,7 +57,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment "TooB spectrum analyzer" ; mod:brand "TooB"; diff --git a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl index 1873f3b..7ef4d50 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl @@ -57,7 +57,7 @@ tonestack:eqGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; uiext:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmp.so b/lv2/aarch64/ToobAmp.lv2/ToobAmp.so index 9b99c67..40cfb54 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/ToobAmp.so and b/lv2/aarch64/ToobAmp.lv2/ToobAmp.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so index b9dcb29..008c5d9 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so and b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl index f1410fb..d330dc3 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Emulation of a Boss CE-2 Chorus. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl index 182f916..b7743d6 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ A straightforward no-frills digital delay. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl index 89b844e..dc4437b 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Emulation of a Boss BF-2 Flanger, based on circuit analysis and simulation of the original. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl index 4ea17cf..9974648 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Digital emulation of a Boss BF-2 Flanger. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl index d23147e..2066069 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Toob Freeverb is an Lv2 implementation of the famous Freeverb reverb effect. FreeVerb delivers a well-balanced reverb with very little tonal coloration. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl b/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl index e03faba..0ecc35f 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ A 7 octave graphic equalizer, with frequencies chosen to be useful for EQ-ing guitar signals. """ ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl b/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl index c1ee489..73287e9 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl @@ -92,7 +92,7 @@ myprefix:output_group doap:license ; doap:maintainer ; lv2:minorVersion 1 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl b/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl index b91b89a..b1cfa06 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl @@ -78,7 +78,7 @@ myprefix:output_group doap:license ; doap:maintainer ; lv2:minorVersion 1 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl index c6dec0d..2c6ecb3 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl @@ -67,7 +67,7 @@ toobml:sagGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ The TooB ML Amplifier plugin provides emulation of a variety of amplifiers and overdrive pedals that are implemented using neural-network-based machine learning models of real amplifiers. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl b/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl index add9e48..f85beb6 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Remix a stereo input signal. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl index 49a7a6e..8cee2d3 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl @@ -61,63 +61,66 @@ toobNam:eqGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ -A port of Steven Atkinson's Neural Amp Modeler to LV2. +TooB Neural Amp Modeler is a neural network based Amp Simulator. It uses .nam model files that are generated by training nueral networks +on audio recordings of actual guitar amps, effects pedals and other equipment. .nam files contain data from the trained models, which can be loaded into +TooB Neural Amp Modeler. The resulting models produce startlingly realistic emulations of the original equipment. -TooB Neural Amp Modeler uses uploadable .nam model files. Download .nam model files from http://tone3000.com, and then load them into TooB Neural Amp Modeler. +The .nam file format (and the NAM technology itself) was developed by the open-source Neural Amp Modeler Core project. The NAM Core project provides both code that can be used by Neural Amp Modeler +plugins, and code that can be used to train models for use in NAM plugins. Currently, NAM plugins are available on a wide variety of operating systems and audio platforms, and are +increasingly being used in commercial pedals and amps. -The TONE3000 website contains a huge collection of community-developed amp models that can be used with TooB Neural Amp Modeler. You can also use .nam models from -other sources. Using TONE3000 models with TooB Neural Amp Modeler is a two-step process. First, download model files to your local system using a +Although NAM is, first and foremost, used to model guitar amps, it is equally good at emulating a wide variety of other guitar effects. Overdrive and distortion pedals, +compressors, limiters, tube preamps on studio mixing strips, and many other effects can be simulated extremely well using NAM models. NAM will definitely become +your go-to source for great amp emulations; but it should probably also become your go-to source for emulating distorion and overdrive pedals. And developers +are constantly coming up with new and ingenious applications for NAM models. + +.nam model files can be donwloaded from the internet. There are many online sources for .nam model files, both free, and commercial. Foremost among these is the +http://tone3000.com website, which provides a vast collection of free .nam models files that have been developed and uploaded by a large online community of NAM users. + +Loading .nam model files into PiPedal is a two-step process. First, download model files to your local computer, or your phone or tablet, using a web browser. Then upload the model files to the PiPedal server using the PiPedal web interface. You can find an "Upload" button in -the file browser when you click on the "Model" control in the PiPedal web interface. - +the file browser when you click on the "Model" control in the plugin's user interface within the PiPedal web interface. If you are not using PiPedal, just click on the Model control, and use the file browser to select the .nam file directly on your local system. TooB Neural Amp Modeler supports a much wider range of amp models than ToobML, but usually uses more CPU. You will need at least a Pi 4 to use Toob Neural Amp Modeler, and you may need to increase your audio buffer sizes to prevent overruns. If you are having trouble with CPU usage, tone3000.com does contain some smaller amp models. Search for the "feather" tag to find -models that use less CPU. Generally, you can use up to three NAM models at once in a given preset on a Pi 4, and up to 5 MAM models -simultaneously on a Pi 5. N100 micro PCs could presumably do even better. However, exact CPU use varies depending on the complexity of the amp models you are using. -Users have reported success using NAM on Raspberry Pi 3 devices, but this is not recommended (or really supported), as CPU usage is very high on a Raspberry Pi 3. +models that use less CPU. Generally, you can use up to three NAM plugins at once in a given preset on a Pi 4, and up to 16 NAM plugins +simultaneously on a Pi 5. However, exact CPU use varies depending on the complexity of the amp models you are using. + If you are interested in profiling your own amps and effect pedals, please visit https://www.tone3000.com/capture When the Threaded control is on, neural amp modelling calculations are run on a separate thread from the real-time audio thread. This introduces one extra audio buffer of latency, but allows the plugin to make full -use of all availble processor cores when running more than one instance of TooB Neural Amp Modeler. As a result, -you can run more instances of TooB Neural Amp Modeler than you ordinarily could. On a Pi 5, you can run up to 8 -instances of TooB Neural Amp Modeler in a single preset (as opposed to four or five), and up to 5 instances of TooB -Neural Amp Modeler (as opposed to two or three). +use of all available processor cores on your Pi server. On a Pi 5, you can run more instance than you +could ever practically use when using threading; on a Pi 4 you can run 5 simultanous instances when using threading. -You need to check that the PiPedal server's CPU is not temperature throttling -when using this feature. If the CPU temperature exceeds 80 degrees Celcius on a Raspberry Pi, the CPU clock rate is reduced, and -the performance of the plugins will be affected. Having a good heat sink, or active cooling system is recommended when using this feature. -PiPedal displays the current CPU temperature in a status message at the bottom of the display (unless you've turned +When using more than a couple of NAM instances, you need to check that the PiPedal server's CPU is not temperature throttling +when using this feature. +If the CPU temperature exceeds 80 degrees Celcius on a Raspberry Pi, the CPU clock rate is reduced, and +the performance of the plugins will be affected. Having a good heat sink, or active cooling system is recommended when using more than a couple of +NAM instances. PiPedal displays the current CPU temperature in a status message at the bottom of the display (unless you've turned that off in settings), and also displays the current CPU temperature in the status message found at the top -of the Settings page. The exact temperature at which the CPU starts to throttle varies from computer to computer. If -you are running on a system that is not a Raspberry Pi, please consult your manufacturer's help documentation -to find out what temperature heat throttling starts at on your particular computer, if you really need to know +of the Settings page. If you are running on a system that is not a Raspberry Pi, please consult your manufacturer's +help documentation to find out what temperature heat throttling starts at on your particular computer, if you really need to know what the threshold is; but the effect on performance is pretty obvious when heat throttling does start. Note that heat throttling is done to protect your processor from permanent damage due to overheating; but there's no real risk of actual damage, since heat throttling thresholds are set well below the point at which damage occurs. -TooB Neural Amp Modeler contains code optimizations that allow use of a third model on Raspberry PI 4 devices. These optimizations -were offered to the upstream NAM project, but we recommended that they not be merged into upstream sources, because they -significantly affect maintainability of the codebase. and the performance increase they provide (about 30%) is really only -relevant on Raspberry PI 4-class devices. If you are interested in these optimizations, they have been published in ToobAmp -project sources on GitHub. - -TooB Neural Amp Modeler uses code from the NeuralAmp Modeler Core project (https://www.neuralampmodeler.com/). The TooB team wishes +TooB Neural Amp Modeler is based on technology developed by the NeuralAmp Modeler Core project (https://www.neuralampmodeler.com/). The TooB team wishes to express gratitude to Steven Atkinson for making this revolutionary technology available as open-source code. This is groundbreaking -technology that changes everything; and work that would be impossible to replicate without the work that Steven has done. +technology that changes everything. None of this would have happened without the work that Steven has done. TooB Neural Amp Modeler uses code from the NeuralAudio project (https://www.neuralampmodeler.com/). The Neural Audio project provides highly -optimized implementations of the most commonly used Neural Amp models. The TooB team wishes to express gratitude to Mike Oliphant for -making his making his optimizations available as open-source code. +optimized implementations of Neural Amp models. The TooB team wishes to express gratitude to Mike Oliphant for +making his optimizations work available as open-source code. -Steve and Mike have done all of the hard work that was required to make NAM technology available through TooB Neural Amp Modeler. +Steve and Mike have done all of the hard work that was required to make NAM technology available through TooB Neural Amp Modeler. They +deserve all the credit. Code from the the NeuralAmpModelerCore project (https://github.com/sdatkinson/NeuralAmpModelerCore) is provided under the following license. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl index 4d4747b..6bc719f 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl @@ -54,7 +54,7 @@ noisegate:envelope_group doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ A noise gate is an audio processing tool that controls the volume of an audio signal by allowing it to pass through only when it exceeds a set threshold. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl b/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl index e144359..db9c38e 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ A loose emulation of an MXR® Phase 90 Phaser. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl b/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl index ba7ceac..dc49767 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl @@ -60,7 +60,7 @@ toobPlayer:seek doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Play audio files. Audio files can optionally be loooped by pressing the "Set loop" button. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl b/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl index dbded26..d7d7efa 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl @@ -51,7 +51,7 @@ recordPrefix:audioFile doap:license ; doap:maintainer ; lv2:minorVersion 1 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl index d950877..c013b8d 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl @@ -88,7 +88,7 @@ myprefix:loop3_group doap:license ; doap:maintainer ; lv2:minorVersion 1 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl index ef8f58b..3f58b62 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ TooB Tuner is a chromatic guitar tuner. """ ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl b/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl index 4fb2b9b..97047aa 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl @@ -39,7 +39,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 65 ; + lv2:microVersion 66 ; rdfs:comment """ Volume control. diff --git a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so index ad39a3e..1702ce2 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so and b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so index 10c7044..1335f65 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so and b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so differ diff --git a/vg.output b/vg.output deleted file mode 100644 index 7806bf0..0000000 --- a/vg.output +++ /dev/null @@ -1,279 +0,0 @@ -==82092== Memcheck, a memory error detector -==82092== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. -==82092== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info -==82092== Command: ./build/src/pipedald /etc/pipedal/config ./vite/dist -port 0.0.0.0:8080 -log-level debug -==82092== Parent PID: 82091 -==82092== -==82092== Syscall param ioctl(generic) points to uninitialised byte(s) -==82092== at 0x4FB3DED: ioctl (ioctl.c:36) -==82092== by 0x48C24D0: ??? (in /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0) -==82092== by 0x41452E: pipedal::AlsaDriverImpl::AlsaCloseAudio() (AlsaDriver.cpp:397) -==82092== by 0x41468F: pipedal::AlsaDriverImpl::AlsaCleanup() (AlsaDriver.cpp:425) -==82092== by 0x41CC5E: pipedal::AlsaDriverImpl::Close() (AlsaDriver.cpp:1912) -==82092== by 0x39F689: AudioHostImpl::Close() (AudioHost.cpp:580) -==82092== by 0x314747: pipedal::PiPedalModel::Close() (PiPedalModel.cpp:165) -==82092== by 0x159B37: main (main.cpp:425) -==82092== Address 0x1ffeffe5cc is on thread 1's stack -==82092== -==82092== -==82092== HEAP SUMMARY: -==82092== in use at exit: 35,347 bytes in 368 blocks -==82092== total heap usage: 9,183,128 allocs, 9,182,760 frees, 834,061,294 bytes allocated -==82092== -==82092== 22 bytes in 1 blocks are definitely lost in loss record 7 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x6101FAB: ??? -==82092== by 0x60DC924: ??? -==82092== by 0x60E5CE6: ??? -==82092== by 0x60E623C: ??? -==82092== by 0x60D97E1: ??? -==82092== by 0x60DAAFF: ??? -==82092== by 0x60E59EB: ??? -==82092== by 0x60E5A23: ??? -==82092== by 0x5E45BA7: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== -==82092== 56 bytes in 1 blocks are definitely lost in loss record 23 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x61607FD: ??? -==82092== by 0x61B8A4F: ??? -==82092== by 0x615B267: ??? -==82092== by 0x61B8BA5: ??? -==82092== by 0x6165373: ??? -==82092== by 0x5E45C6B: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== by 0x5F7C099: ??? -==82092== -==82092== 88 bytes in 1 blocks are definitely lost in loss record 28 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x618ABDC: ??? -==82092== by 0x60F2640: ??? -==82092== by 0x60F49D2: ??? -==82092== by 0x60F4B1C: ??? -==82092== by 0x5E405AB: ??? -==82092== by 0x5E3C43F: ??? -==82092== by 0x5E45B79: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== -==82092== 115 bytes in 2 blocks are definitely lost in loss record 29 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x425EF8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:109) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 292 bytes in 8 blocks are definitely lost in loss record 50 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x426FD9: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:209) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== by 0x4EADF8: std::shared_ptr std::make_shared(pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:1010) -==82092== -==82092== 439 bytes in 8 blocks are definitely lost in loss record 54 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x425DBC: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:99) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 454 bytes in 8 blocks are definitely lost in loss record 55 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x4260D8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:124) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 459 bytes in 8 blocks are definitely lost in loss record 56 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x426038: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:119) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 479 bytes in 8 blocks are definitely lost in loss record 57 of 74 -==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) -==82092== by 0x425F98: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:114) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 63 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x4272AD: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:230) -==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 64 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x4272E7: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:231) -==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 65 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) -==82092== by 0x427337: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:232) -==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) -==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==82092== by 0x505132: construct (alloc_traits.h:661) -==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==82092== -==82092== 3,352 (80 direct, 3,272 indirect) bytes in 1 blocks are definitely lost in loss record 70 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x6161246: ??? -==82092== by 0x60DC94F: ??? -==82092== by 0x60E5CE6: ??? -==82092== by 0x60E623C: ??? -==82092== by 0x60D97E1: ??? -==82092== by 0x60DAAFF: ??? -==82092== by 0x60E59EB: ??? -==82092== by 0x60E5A23: ??? -==82092== by 0x5E45BA7: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== -==82092== 3,709 (80 direct, 3,629 indirect) bytes in 1 blocks are definitely lost in loss record 71 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x6161246: ??? -==82092== by 0x61902DE: ??? -==82092== by 0x5F765D7: ??? -==82092== by 0x6179366: ??? -==82092== by 0x5F7BE3D: ??? -==82092== by 0x5F76550: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== by 0x5F7C099: ??? -==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) -==82092== -==82092== 3,950 (56 direct, 3,894 indirect) bytes in 1 blocks are definitely lost in loss record 72 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x618ABDC: ??? -==82092== by 0x6179016: ??? -==82092== by 0x5F71D5E: ??? -==82092== by 0x5F76545: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== by 0x5F7C099: ??? -==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) -==82092== by 0x1597CF: main (main.cpp:303) -==82092== -==82092== 4,264 bytes in 1 blocks are definitely lost in loss record 73 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x618ABEC: ??? -==82092== by 0x60DAAD3: ??? -==82092== by 0x60E59EB: ??? -==82092== by 0x60E5A23: ??? -==82092== by 0x5E45BA7: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== by 0x5F7C099: ??? -==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==82092== -==82092== 5,804 (256 direct, 5,548 indirect) bytes in 1 blocks are definitely lost in loss record 74 of 74 -==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) -==82092== by 0x618ABDC: ??? -==82092== by 0x5E45B9A: ??? -==82092== by 0x5E45E24: ??? -==82092== by 0x5F764D2: ??? -==82092== by 0x5E2F318: ??? -==82092== by 0x5E2F586: ??? -==82092== by 0x5F7C099: ??? -==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) -==82092== by 0x1597CF: main (main.cpp:303) -==82092== -==82092== LEAK SUMMARY: -==82092== definitely lost: 13,116 bytes in 299 blocks -==82092== indirectly lost: 16,343 bytes in 30 blocks -==82092== possibly lost: 0 bytes in 0 blocks -==82092== still reachable: 5,888 bytes in 39 blocks -==82092== suppressed: 0 bytes in 0 blocks -==82092== Reachable blocks (those to which a pointer was found) are not shown. -==82092== To see them, rerun with: --leak-check=full --show-leak-kinds=all -==82092== -==82092== Use --track-origins=yes to see where uninitialised values come from -==82092== For lists of detected and suppressed errors, rerun with: -s -==82092== ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) diff --git a/vite/src/pipedal/ModGuiHost.tsx b/vite/src/pipedal/ModGuiHost.tsx index 8752706..4b8aeeb 100644 --- a/vite/src/pipedal/ModGuiHost.tsx +++ b/vite/src/pipedal/ModGuiHost.tsx @@ -1647,7 +1647,8 @@ function ModGuiHost(props: ModGuiHostProps) { return ( { props.onClose(); setErrorMessage(null); }}> -