Generally I agree with David, but there are a few things wher I dont:
On Fri, Dec 13, 2002 at 02:30:32 +0100, David Olofson wrote:
* The label
is a file-unique, non-whitespace, string identifier
for * the plugin. Hosts can use the filename and label to identify
a * plugin uniquely. The label is all upper case, by convention.
*/
const char *xap_label;
Why is this needed? (There are unique IDs, I mean...)
LADSPA has them and its useful sometime, eg. for selecting plugins in
command line apps, and for developers.
void
*(*xap_create)(XAP_descriptor *descriptor, XAP_host *host,
int rate);
Why only "rate" here - or rather, why "rate" at all? I think there
are more things that a Plugin might want to know, so it might be
better to pass this kind of info some other way.
Well, you might want to refuse to instantiate, based on the sample rate.
/*
* set_rate: set the sample rate
*
* This method may only be called on plugins that are not active.
(Same thing as controls that may only be changed in certain states.)
This should not be allowed, if you want to run the instrument at a
different rate, reinstantiate it.
#define
XAP_RTFL_SLOW 0x20 /* is 'slow' in general */
Well, everything is relative...
I think it would be much more interesting to have a warning hint for
plugins that are significantly nondeterministic in their CPU usage.
Agreed. I think tis less confusing to have to indicate that a plugin /is/
deterministic though.
Don't do what ladspa did though and mix together RT safe-ness and
determinicity (is that a real word?).
#define
XAP_CTRLHINT_PITCH "PITCH" //channel,voice
...and the optional "NOTE_PITCH" that no one will ever use, of
course. ;-)
And many of us still think doesn't belong in the API... :)
- Steve