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

Steve Harris S.W.Harris at ecs.soton.ac.uk
Mon Dec 9 07:33:00 UTC 2002


On Sun, Dec 08, 2002 at 11:06:36PM +0100, David Olofson wrote:
> Just like with LADSPA, the plugin will have to tell the host whether 
> or not it has absolute upper and/or lower limits. In VST, the range 
> is [0,1], period, but I think that's too restrictive. Scaling that 
> range to whatever you need is fine, but that's not the point: Some 
> controls just don't *have* sensible absolute limits - so why force 
> plugin designers to "invent" some?

Actually it quickly became obvious that for a host to construct a useful
GUI the plugin has to at least hint at some ranges.

Howeve in LADSPA theres nothing to stop you going past the hints, and I
even recommend it for some plugins.
 
> Normally, plugins just do what you tell them. They don't change their 
> own input controls. (Well, they *could*, but that would be pretty 
> hairy, I think... Or maybe not. Anyone dare to try it? ;-)

I think it would be bad :)
 
> So have I (when designing MAIA) - until I actually implemented 
> Audiality. There *should* be a single per-instance event port - the 
> Master Event Port - but you may optionally have one event port for 
> each channel as well, if you have any use for per-channel events. You 
> may well just use the Master Event Port for everything in a 
> multichannel plugin, but then you're on your own when it comes to 
> addressing of channels and stuff. (That would require more dimensions 
> of addressing in each event, which means a bigger event struct, more 
> decoding overhead etc.)

Yes, but is that overhard larger than having multiple event ports?

For instruments with high channel count and low event rate (eg. a sampler?) I
would imagine that multiplexing into one event port would be more
efficient?
 
> run() (or process(), as I prefer to call it) should be called only 
> once per buffer, and there should be only one per instance. That's 
> the one major point with supporting multichannel at all; the *plugin* 
> gets to decide how and when things are done for the whole set of 
> Channels. If processing all channels in parallel is better in some 
> places; fine, do so.

Agreed.
 
> the RT engine - *unless* you decide on a number of VVIDs to allocate 
> for each Channel of every plugin, right when they're instantiated.

That sound most sensible. The instrument has to allocate voice table
space, so there is likly to be an internal (soft) limit anyway.

- Steve 



More information about the Linux-audio-dev mailing list