[LAD] XUiDesigner -> create LV2 plugs from scratch

Robin Gareus robin at gareus.org
Tue Mar 23 22:23:24 CET 2021


Hi Fons,

On 3/23/21 9:59 PM, Fons Adriaensen wrote:
> If by that you mean it can't use dynamic libs, then how do
> you arrive at that conclusion ?

It is motivated by running plugins in process to avoid context switches.

Say you have 2 plugins, one using aubio.so.2 the other aubio.so.3, or
different plugins using different versions of libavresample.so

Distros often bundle multiple major versions of libraries and that is
fine as long as a given ABI of that library is only used by different
processes. But when you want to load plugins into a host, they will
conflict.

Another example where this happened in the past was fftw. Then this also
extends to various GUI toolkit conflicts (gtk 2/3/4 cannot co-exist in
the same memory space, nor can QT 4/5/6).

Plugins should be self-contained and not depend on external libs (except
for ones with a client/server interface where the lib needs to match the
server e.g. X11, openGL -- but those have versioned symbols and a stable
ABI).

As added benefit, this increases reliability when distributing plugin
binaries: The plugin does not use some random library version found on
the target system.


Cheers!
robin

References:
 https://ardour.org/plugins-in-process.html
 https://gist.github.com/abique/4c1b9b40f3413f0df1591d2a7c760db4
 https://linuxmusicians.com/viewtopic.php?p=84986#p84986


More information about the Linux-audio-dev mailing list