I think every plugin should implement every function
mandatory. Why?
When I first started, I executed activate() deactivate() run_adding()
without checking if they were NULL.
the cost of a function call is significant even when compared to a
branch mis-prediction. its therefore cheaper for hosts to say:
if (plugin->activate) plugin->activate (plugin);
than
plugin->activate (plugin);
Particularly, this would be easy, would be a bit mask,
that specified if
it was a synthesis flag, or an effect processor, or something else. One
boolean comparison and you could determine how a plugin could be used.
there are no booleans for many plugins. its very easy to create
plugins that can be considered many different things.
Now, I have realized one thing: not all LADSPA plugins
are good and will
initialize themselves. So, I have to make sure I initialize it with the
default hints, or it will blow up, lock up my system with massive buffer
under runs because the plugin is making NANs or massive denormals or
doing something just plain naughty.Some of them will come up in a random
state and more or less they will lock up my system.
ardour hosts all ladspa plugins, and i have never seen this behaviour
with any of the plugins i've tried (though to be honest, i haven't
tried that many of them).
and more chorus plugins would be cool, yes.
--p