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

True.

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

Reply via email to