[linux-audio-dev] LADSPA needs & wishes

Steve Harris steve at plugin.org.uk
Sun Jan 28 15:01:26 UTC 2007

On 28 Jan 2007, at 05:07, Fraser wrote:
>> however, it and i think all the other issues you raise are all  
>> solved by
>> LV2 (LADSPA Version 2), which has come about in part from other  
>> people's
>> difficulties with the same range of problems as you.
> ahh, so there is a V2 coming, not too much info about it yet out there
> (unless you know where to look)

Which is deliberate, as it's not quite finished yet. There was quite  
a lot of discussion here though.

On the "natural" parameter values, I really rather like it that way.  
Sure, it costs a bit of CPU to do the conversion, but it means that  
different plugins of the same type are more likely to be compatible,  
and it makes wiring up things in a modular synth style easier. It  
also means that things like preset files contain the same values as  
the live display, which is helpful.

When it comes to burning a bit of extra CPU power to make the users  
life easier, I'm all for it.

>> From my quick look at the LV2 spec there's something I'd like to  
>> see (this
> is just my 2c):
> The plugin doesn't know when a parameter has changed, so it must  
> calculate
> it's internal values from the displayed parameter 'as often as  
> possible' -
> once per run() call (doing it in the for loop itself is just too  
> extreme).

Sure. This was an issue in LADSPA, though not a significant enough  
one that anyone wanted it changed. I would suspect you're  
overestimating the burden compared to the function call overhead and  
cache thrashing. I'd be interested to see figures indicating  
otherwise though. There will obviously be cases where it's faster to  
set values using callbacks, but I'll bet it's not universal.

It's also quite convenient for both the plugin and host not to have  
to provide/call callbacks for every parameter.

> This has the following advantages
> 1) run() just runs (saved a bit of cpu)

But costs you some extra function calls, and makes the CPU load  
dependent on the frequency of changes, which makes predictably  
hitting RT deadlines harder.

> 2) internal values are only calculated when the parameter they are
> associated with changes


> 3) changes to parameters can be presented to the run() function  
> immediately

I don't see how it makes any difference in this area?

> 4) the plugin knows when a parameter changed and so can smooth  
> jumps in
> values itself (rather then hoping to host is doing it)

Either way the plugin is free to do parameter smoothing. Typically I  
just do a linear interpolation and/or a 1st order LP filter.

- Steve

More information about the Linux-audio-dev mailing list