On Fri, May 11, 2007 at 05:13:17PM +0200, Florian Schmidt wrote:
On Friday 11 May 2007, Fons Adriaensen wrote:
Since there is a way to add all this functionality as extension, the question
is:
Why would you _not_ want these as extensions, but as part of the core api?
I can think of several reasons:
...
- A more important point is fragmentation. Some hosts will support only these
features, different hosts only others etc.. This will decrease end user
experience if it interferes with really basic functionality (e.g. there is
more than one extension for something like fixed buffersizes, etc..). I am
pretty sure though that pretty soon a fixed set of extensions will evolve
which all hosts will implement. LV2 is basically the _ideal_ playground for
such an evolution to take place.
This comes close. Allow me quote myself:
You can probably explain to a non-technical user that some hosts do support
e.g. MIDI or OSC and others don't - these are things he knows. You can not
IMHO explain to the average user that his favourite host does not accept
his favourite reverb plugin because it does not support a particular type
of algorithm - it's a different world that he doesn't care about. The basic
infrastructure to support all types of processing should be present in all
hosts, and it doesn't take much. You just have to know they exist and think
a bit.
A second reason would be that using different init() and run() functions,
not in function of user-level functionality but just to support some types
of algorithm complicates a host for no good reason. OTOH the extra data
required to support multi-channel, multi-rate and block-oriented algos
is minimal, it doesn't complicate a host or get in the way of anything,
and can be simply be ignored if you don't need it.
Thirdly, since it seems already impossible to explain this to the core
designers, I won't hold my breath until some host developers understand
why some simple things are necessary, and implement them. It will not
happen. Which means that I can't write the plugins I'd want to write
because no host will support them. And if I have to write both the host
and the plugins, I could as well use any other API that does the job.
I'm fully behind the ideas at the basis of LV2 as regards high-level
functionality. But the rules - and the aesthetics - in the low-level
underworld of DSP are different to those of IT engineering in general.
Things have to be as simple and efficient as possible, even if this
goes at the expense of beautiful abstractions.
--
FA
Follie! Follie! Delirio vano รจ questo !