[LAD] [ANN] LV2 beta3

Fons Adriaensen fons at kokkinizita.net
Fri May 11 10:02:36 UTC 2007


On Fri, May 11, 2007 at 03:45:36AM +0200, torbenh at gmx.de wrote:

> Anyone who refuses to write LV2 extensions has a bad taste.
> this is about aesthetics. 

I don't refuse to use extensions. My point is that they should
be used for adding user-level functionality such as MIDI or OSC
support, but not to get the basic low-level stuff right.

My critique on the basic LV2 spec is not that it doesn't support
certain types of application (these can be added by extensions),
but that it provides very poor or broken support for certain types
of algorithms. Probably because the people who defined it have
never written those kind of things and are not aware of what is
required.

To re-use a previous example, it's like a car that does work,
it has wheels, and engine, a gas tank, etc. But it doesn't 
have lights, a hand break, or windscreen wipers. Most of the
time you don't need any of these. But if you drive at night
you need lights, it it rains you need windscreen wipers and
in the hills you need a handbrake. All three are mandatory
in most countries.

> we all love the sound, but look:

Ah, my very first Linux code !!! (tears of emotion :-).

There a a few things I would do differently today (as I
did in more recent plugins):

- use enum'ed port names,
- use 'z1, z2, z3...' as the variables representing filter
  state (corresponding to z^{-1} in the maths).

For the rest, I suspect you're falling over the terse style
and short variable names. All this is essentially mathematical
code. People use short names like a,b,c (variables), i,j,k
(indices), or x,y,z (unknowns or coordinates) in maths. 
If you know the subject matter they are as good as any other.
If not, there is no point in reading this sort of code, it's
not meant to be tutorial.

Suppose you write code to solve a quadratic equation.
Everybody will understand:

 d = sqrt (b * b - 4 * a * c)

because that is what is in the textbooks, and what you have
learned at school. Writing this as:

 discriminant=sqrt(square(firstOrderCoefficient)-4*secondOrderCoefficient*constantTerm)

will not contribute anything useful.


-- 
FA

Follie! Follie! Delirio vano è questo !





More information about the Linux-audio-dev mailing list