[linux-audio-dev] PTAF link and comments

Tim Hockin thockin at hockin.org
Tue Feb 4 20:09:00 UTC 2003


> What I'm saying is basically that it's not a goal in itself to create 
> our own "standard" here. If we can get along with the GMPI group and 
> something useful gets out of it, things will be better for everyone. 
> What this would mean to XAP as such is uncertain, of course - but I 
> think we will have *very* little influence on what will become The 
> Audio Plugin API, unless we participate in the GMPI effort.

True enough, though if we finish first, we have a grounds to push XAP as a
good starting point :)

> > 1) none - host can autogenerate from hints
> 
> This part is mostly done, right? (Well, we don't have a real host yet, 
> so we obviously don't have an implementation.)

yep

> > 2) layout - plugin provides XML or something suggesting it's UI,
> > host draws it
> 
> Basically like 1), but with some extra info, right?

yep - an XML schema even exists.

> > 3) graphics+layout - plugin provides XML or something as well as
> > graphics - host is responsible for animating according to plugin
> > spec

> Well, unless we can just whip something almost that good up in no 
> time, from existing, highly portable and suitably licensed stuff. 
> Maybe if libvstgui is released under the LGPL, and we hack a binding 
> for some nice and easy to learn language...?

That's more or less what I was thinking - not too fancy, just something to
blit simple bitmaps - a background + a 16-state knob overlay.

> > 4) total - plugin provides binary UI code (possibly bytecode
> > or lib calls)
> 
> Byte code? Pretty close to what I suggested for 3. And the same 
> issues, of course. The native code version is probably simpler, but 
> obviously, not nearly as flexible.

libVSTGui was what I was trying to say without saying it :)

> And I still agree. There won't be as many hosts as plugins, and we can 
> hack a simplified host SDK, if people think our requirements on the 

Agreed again

> Right, but that solves only part of the problem. You have to be able 
> to deal with "weird characters" in plain strings as well, including 
> paths and file names.

ok, I'll buy that

> That is, if anyone's in doubt, I'm back at my old position; we should 
> at least have an adding version.

I'm there, too

> > I'm leaning more towards the idea that if a plugin can do in-place
> > processing, it may be asked to, but it should have the ability to
> > specifiy for itself.
> 
> Yeah. Just a hint that can be ignored, if "in-place broken" is 
> assumed.

yes - in-place-safe is a hint.  Assume broken by default.

> If you think of it this way: SET gets an extra argument 'duration' 
> that you would "normally" set to 0. *If* you use another value, the 
> event effectively becomes a RAMP event.
> 
> Or as I've previously expressed it; define RAMP with a zero duration 
> to be a SET operation. Slight special case, but if you actually try 
> 
> Now, whether we should call that single event RAMP or SET is open. I 
> would suggest CONTROL instead, as that's less specific and thus, less 
> missleading. Besides, it has the advantage of appearing to be related 
> to controls - which is very true. :-)

Good enough for me.

> > I rather like normalized values.  I've been contemplating this
> > problem, myself.  I don't like having to call normalize functions
> > for every translation, though.  Can the translation overhead be
> > minimized?
> 
> Consider this:
> 
> 	* Controls that are meant to be connected generally
> 	  have the same units and the same ranges.

What about generic controller plugins?  A generic envelope controller or
LFO.  Normalized values just work (assuming we can define normalized - it's
not easy :)  Or we can just say that things like that output normalized
data, and have to be passed through some sort of scalar.

> > I actually have this in my own notes for XAP - an optional way for
> > the plugin to save 'extra stuff' with a preset or document.
> 
> How about combining a few "old" features here:
> 
> 	* An output must initialize the connected input
> 	  as soon as audio processing continues.

> Now, give one or more row data control outputs a suitable type hint, 
> such as "INSTANCE_STATE", so hosts can just connect them, call 
> process() for 0 frames and store the data somewhere. No extra calls 

hmm, so to save a preset you'd have to connect the INTERNAL_CRAP control to
something and process(0)?  I don't know.  Just saying 
plug->save_extra_state(raw_data *r); seems cleaner, to me.  I am also
contemplating saying that controls need to be readable, just because it irks
me that they're not.

Tim



More information about the Linux-audio-dev mailing list