[linux-audio-dev] LADSPA proposal ...

Fons Adriaensen fons.adriaensen at skynet.be
Sun May 16 11:43:34 UTC 2004

On Sun, May 16, 2004 at 09:14:46AM +0200, Marcus Andersson wrote:

> > >This also means that it is illegal to include 0 in the parameter range.
> >
> >In that case you can use f(x) = x*a^x, with a = f(1).
> >
> How do I invert this function? I am stuck.

You need the inverse only to set the slider to a given value.
A Newton-Raphson iteration will do that very rapidly, and
the required precision is not very much (a small fraction of
a pixel).

> What do you propose in the case of [-20.0, 40.0]?

For a HINT_LOGARITHMIC control, which implies that there is an
exponential conversion from the slider position to the param
value, this is just illegal (as is in fact the f(0) = 0 case).
What do you mean with a log scale from -20 to +40 ???

In fact the linear / logarithmic choice is a bit too simplistic,
It could be improved with a few more hint bits to cover some
classic cases, but for a plugin I can live with this limitation. 

Another thing that is not covered is the case of simple gain
fader. If you look at the control law of a good fader on a mixing
desk, it clear that there is more precision (in dB) in the upper
range than at the bottom, and it goes down to minus infinity.
Depending on what the fader is used for, the lowest tick above
'off' could be something from -100 to -40 dB. No standard
slider widget allows you to do such a thing, and you'll need 
something more general anyway.

For typical audio work, I'd think a set of about 8 to 10
control laws would cover 99.99% of all cases. It would take
just 4 hint bits to encode these cases plus some 'escape'
value for an arbitrary mapping, but I wouldn't dare propose
such a thing.


More information about the Linux-audio-dev mailing list