New LSP Plugins 1.2.31 release with fixes of bugs and regressions available!
In this release we introduce support of PipeWire without and intermediate JACK layer.
The overall change list is the following: Added new ‘standalone’ build feature which now replaces the ‘jack’ build feature for launching standalone plugins. The feature ‘jack’ is now responsible for building JACK audio backend for standalone plugins. Moved all JACK-related code into a separate lsp-audio-jack module. Added support of PipeWire audio backend using lsp-audio-pipewire module, new build feature ‘pipewire’. Updated build system: ASAN, CROSS_COMPILE, DEBUG, DEVEL, PROFILE, STRICT, TEST, TRACE makefile flags replaced with ‘asan’, ‘crosscompile’, ‘debug’, ‘devel’, ‘profile’, ‘strict’, ‘test’ and ‘trace’ FEATURE flags. Updated makefiles to not to clash with launcher tool on MacOS. Some fixes arount CLAP plugin format for better support of MacOS (contributed by Benjamin Zeiss @ GitHub). Added previous and next preset selection in the preset window. Added possibility to reveal played sample on ‘Listen’ button press for Sampler, Multisampler and Trigger plugin series. Updated behaviour of the AudioSample controller when displaying load status to prevent the UI blinking when switching between samples in the file navigator. Extended dynamics range for Gate and Multiband Gate plugin series. Improved text rendering in hosts that provide their own implementation of FreeType library (like Ardour) by loading the system version of FreeType library if it is available and has greater version number. Some costmetic changes in text lables of the UI for several plugins. Re-numbered plugins’ parameter labels to start counting parameters with 1 for the following plugins: Artistic Delay; Crossover; Dynamics Processor; Impulse Responses; Impulse Reverb; Multiband Compressor; Multiband Dynamics Processor; Multiband Expander; Multiband Gate; Multiband RingMod Sidechain; Room Builder; Slap-Back Delay; Spectrum Analyzer. The auto-play and auto-load features in file navigator have been moved into separate ‘UI Behavior’ options for Impulse Responses and Impulse Reverb Plugin series. The ComboBox and ComboGroup widgets now properly react on the ‘ESC’ key pressure and hide the dropdown list when it is open. Fixed Drag & Drop issue under X11 (contributed by Justin Frankel). Fixed endless vertical flip of the image on MacOS (contributed by Hoshino Lina). Fixed some bugs in the AudioEnvelope controller that did not allow to fully reset the envelope to defaults. Fixed out-of-sync event handling for CLAP and VST2 extra UI run loop under Linux when hiding and showing plugin window. Fixed generic UI failure for CLAP: removed normalization for discrete parameters. Fixed improper handling of plugin factory initialization/finalization for CLAP plugin format (added support of series of initializations and finalizations as it is allowed by CLAP standard).
This bugfix release fixes the PipeWire audio driver which was improperly linked with pipewire system library and thus could not be loaded by the standalone versions of plugins.
Ardour/Reaper working.
Just checked on my MX Linux partition. Working with Audacity 3.7.7 and lsp-plugins-vst 1.2.29.
Now working in CachyOS too. Installed Audacity 3.7.8 and lsp-plugins 1.2.31
What was the reason for that? The lead pipewire developer has previously stated that he expects only pipewire management applications to use the native pw API, and all audio applications would be expected to use JACK or ALSA API. It seems like for LSP adding native pipewire support would add maintenance work for no benefit.
The reason here is that to work under PipeWire plugins needed a special adaptation layer pipewire-jack. Now you can use plugins without this special adaptation layer.
Second, all work with audio driver for standalone applications was aggregated into a simple interface, so now standalone versions can be ported to other platforms which will introduce this interface.
Moreover, you can use a simple Dummy driver now if you want to just run the GUI without any audio processing. This may be very useful for developers in some way.
That does not seem an accurate way to state the situation. Plugins transfer all audio through the host application, so are unaware of the host audio API. The pipewire-jack module is how the pipewire audio server implements the JACK API. If the system user does not want to use pipewire for JACK audio server the jackd implementation can still be used.
Unless you are referring to pipewire server plugins, instead of LV2 or VST3 plugins to use in a DAW?
Which I assume implements ALSA, JACK, and pipewire native on Linux?
The pipewire FAQ still has this entry:
What Audio API Do You Recommend To Use?
The situation is a bit like GUI toolkits. There are many, each with different use cases. Nobody uses the native display server protocols directly (X11, Wayland) but always through an abstraction layer (GTK, Qt, etc).
We recommend that you continue to use PulseAudio, JACK and ALSA API’s for now.
Which I assume implements ALSA, JACK, and pipewire native on Linux?
At this moment we provide JACK driver (which is default), PipeWire driver if you want to switch to it and Dummy driver just for viewing user interface without a possibility to do audio processing.
I already digged into pipewire-jack module of PipeWire and found that it is much more complicated (and in some cases, restricted due to compatibility issues) than the ‘pw-filter’ module which is pretty enough to implement standalone version of plugin. Additionally, JACK applications and native PipeWire applications use different configuration files which may also be the reason why you may want to prefer PipeWire over JACK.
We do not deprecate JACK driver but extend the possibility of integrating other audio drivers into standalone versions of plugins. This also may be helpful to provide standalone versions of plugins for other systems like Windows, MacOS or Haiku.
Nobody uses the native display server protocols directly (X11, Wayland)