[linux-audio-dev] Plugin APIs (again)

Steve Harris S.W.Harris at ecs.soton.ac.uk
Wed Dec 4 04:41:00 UTC 2002

On Wed, Dec 04, 2002 at 03:04:18 +0100, David Olofson wrote:
> IMHO, plugins should not worry about whether or not their outputs are 
> connected. (In fact, there are reasons why you'd want to always 
> guarantee that all ports are connected before you let a plugin run. 
> Open inputs would be connected to a dummy silent output, and open 
> outputs would be connected to a /dev/null equivalent.)

In modular synth systems there are good reasons why you want to know
whether things are connected (and good reasons why they wouldn't be), but
this spec so far is not useful to a modular synth, so in this case I
> I think there should be as little policy as possible in an API. As 
> in; if a plugin can assume that all ins and outs will be connected, 
> there are no special cases to worry about, and thus, no need for a 
> policy.

> Strongest resason *not* to use multichannel ports: They don't mix 
> well with how you work in a studio. If something gives you multiple 
> channels as separate mono signals, you can connect each one wherever 
> you want, independently, which gives you total control without the 
> need for the rest of your plugin chain to understand any multichannel 
> formats.
> Strongest reason *for*: When implementing it as interleaved data, it 
> may server as a performance hack in some situations. It is still 
> unclear to me, though, whether or not this applies to "your average 
> plugin" in a real virtual studio, and even if it does, whether the 
> complexity/performance ration is anywhere near justifiable. (I 
> suspect not.)

Interleaved data is more trouble that its worth IMNSHO. I think
multichannel outputs are extra complexity with no benefit.

I'm not sure what peoples opinions on numbers of outputs are, obviously the
number needs to be variable per instrument at development time, but I dont
think it should be variable at instantiation time, that doesn't sound
useful, and it would be hell to optimise.

> > Can you expound on the well-known labels idea?  I'm
> > not sure I fully understand what you're thinking.
> In a plugin API, you could standardize the way of "naming" these in 
> some way, such as always marking things MONO, LEFT, RIGHT, CENTER, 
> BLEFT, BRIGHT, SUB etc etc. Use a string, or a struct with some 
> enums, or whatever; just put it in the API, so hosts can make sense 
> of it.

Yes, thanks, thats exactly what I meant. I also proposed a system like
this for standardising panners (eg. stereo in/5.1 out) in LADSPA. Noones
tried it yet, but it should work :)

On controls:

It seems like you need two sets, per instrument and per voice, they should
share the same interface, and the per voice ones definatly should not be
limited to modulation,chorus,whatever.

My feeling is that just float+"arbitrary opaque binary data" is enough.
The float can be augmented with hints, enumerations, whatever.

- Steve

More information about the Linux-audio-dev mailing list