LSP Plugins 1.1.11 is ready!

This release is published exactly 4 years after the 1.0.0 release of LSP Plugins and is aimed to close many core and UI technical debts. All these changes make LSP Project much better in the UI experience and much faster from the DSP perspective.

That’s because support of additional features like drag&drop, bookmarks and some other neat features were added to the graphical toolkit.

From the other side, low-level DSP code is additionally optimized with AVX and AVX2 instruction sets which allow to gain additional performance benefits on processors which have fast AVX implementation (All Intel Core 6 generation processors and above, AMD Zen generation processors and above). There was improved support of AArch64 architecture, and some part of DSP code already has been ported to this architecture. The DSP code for ARMv7 architecture also has been additionally refactored and optimized.

Also, the project became more portable because introduced it’s own support of XML document parsing mechanism and does not require the expat library more.

The overall list of changes is the following:

  • Source code now compiles for the ARMv6A architecture.
  • Implemented incoming drag & drop events support for sample loading and file loading widgets.
  • Added possibility to double-click the parameter’s value and enter it manually with keyboard.
  • Added bookmark support by file opening/saving dialogs. Bookmarks are also automatically imported from GNOME/KDE desktop environments’ configuration files.
  • Refactored UI of the Parameteric Equalizer plugin series.
  • Added allpass filters to Parametric Equalizer plugin.
  • Added knobs that allow to simultaneously shift frequency for all active filters in the Parametric Equalizer plugin series.
  • Added support of RoomEQ Wizard configuration file format import by Parametric Equalizer plugin series.
  • Refactored UI of the Graphic Equalizer plugin series.
  • Updated UI of the Multiband Compressor plugin series.
  • Implemented allpass filters that add phase compensation for the classic mode of the Multiband compressor and allow to achieve flat frequency response.
  • Changed reverb simulation algorithm for the Room Builder plugin: the algorithm now handles capture objects as opaque objects, not part of the 3D scene. So the number and location of the captures does not impact the audio simulations. This allows to render the impulse response in more accurate way. However, even after some set of additional optimizations has been made, this yields to some performance degradation because there are much more ray groups required to be processed.
  • Added possibility to export state to clipboard and import state from clipboard from the UI of any plugin.
  • Added possibility to freeze all graphs in the Spectrum Analyzer simultaneously.
  • Added MIDI groups to Multisampler plugin series.
  • Added possibility to control how panning and gain controls affect the signal passed to the direct output tracks of the Multisampler plugin.
  • Implemented JSON and JSON5 parsing and serializing mechanisms.
  • Implemented XML parsing mechanism without built-in DOCTYPE definition support.
  • Removed EXPAT library from build dependencies since LSP Plugins have their own XML parser.
  • Implemented more advanced expression language for UIs.
  • Implemented styling system and basic styling mechanism for UIs.
  • Additionally optimized DSP biquad filters for 32-bit ARM NEON instruction set.
  • Additional DSP optimizations for AArch64 architecture.
  • Additional DSP optimizations of code with AVX, AVX2 and FMA3 instruction set for i586 and x86_64 architectures.
  • Refactored clipboard mechanism for X11 protocol, addes support of INCR selection transfer protocol.
  • Refactoring of the UI widgets, eliminated old UI code and some deprecated facilities from all widgets.
  • Implemented basic styling mechanism for UI widgets.
  • Implemented ipc::Process class that allows to run nested processes with I/O redirection.
    Code now prefers vfork() system call agains fork().
  • Fixed memory corruption bug in Analyzer core module that could crash the system on non-power-of-two buffer sizes. Affected plugins: Parametric Equalizer, Graphic Equalizer, Spectrum Analyzer, Multiband Compressor.
  • Fixed GLX context synchronization issues that could lead to crashes on several systems.
  • Fixed bug with improper mouse pointer coordinates for nested menus.
  • Fixed bug with improper latency value reported by Limiter plugin series.
  • Fixed corrupted LADSPA binaries due to lack of objects that contain non-required built-in resources. Replaced objects with empty stubs.
  • Fixed problem of improper loading of 3D Wavefont OBJ files that was caused by improper texture coordinate handling.
  • Build fixes for AArch64 architecture related to CPU feature detection.
  • Updated VST state serialization mechanism to version 3: now plugin properly handle state if there is no chunk header in the chunk data passed from the host.

Support the project: https://salt.bountysource.com/teams/lsp-plugins

7 Likes

Amazing work. Love your stuff.

1 Like

Oh, I forgot: Merry upcoming Christmas and Happy New Year!

3 Likes

Sadly but short announcement: one CPU instruction has failed a release. If you have AVX support and no AVX2 support by your computer, please don’t upgrade until the fix will be published. Otherwise plugins will crash trying to execute non-implemented vbroadcastss instruction on your CPU.
The related issue: https://github.com/sadko4u/lsp-plugins/issues/61

Hotfix release is ready!

1 Like