On Sat, Apr 22, 2006 at 10:53:58AM +0100, Steve Harris wrote:
Almost two years ago at the LA conference a bunch of
us agreed that
something need to be done to improve LADSPA, and on the approximate
direction it should take.
[...]
In my experience developing modular synths, it would be a huge benefit
to performance if modules had the option of including source code in the
bundle. This is especially useful if the module can provide a function
that calculates the outputs one sample at a time. I reckon most modules
which do not do any frequency domain calculations can do this.
The reason it's so great is because it allows the host to inline those
functions and call on a C compiler to optimize them together. For some
simple functions, constant folding can make a huge difference. Perhaps
more importantly, the sample buffer between the modules can be
eliminated. When each module does something simple, say a low order IIR,
an oscilator, or a multiplier, the load and store is much slower than
the calculation that happens between them. If the result can be left in
a register for the next module to process, the system becomes much more
efficient. When the process functions are inlined, there is not even the
overhead of a call.
Also, included source is simply convienent if one wishes to tinker with
the module, or run it on a different platform. Perhaps the compiled
version should have a platform-unique name within the bundle, and be
marked with a hash of the source, so that it can be rebuilt when needed,
preferably with some shared ladspa build tool.
Lastly, I'm not saying bundles-as-directories is a bad idea, but an
alternative to an openstep bundle is an ar archive. It works like tar,
only it is designed for nonsequential access of members. ".a" static
libraries and ".deb" debian packages are really just ar archives.