It doesn't because the host/sender doesn't
really care. A controller
or sequencer is just supposed to deliver events. It shouldn't care
more about voice activation than it does about the exact relation
between events and audio output.
OK, and we seem to agree that a VOICE_ALLOC or PREP_VOICE or something is
needed to mark that voice as re-usable.
VOICE_INIT_START
VOICE_CONTROL_SET
VOICE_INIT_STOP
It's not NAMED VOICE_ON, but it is semantically the same, yes?
If VOICE_ON
doesn't make sense for some synth, then it still makes
sense for the user.
Why? (Unless the user is a tracker die-hard.)
Consistency between instruments. You always need to create a voice, with
some (0-n) initial params.
VOICE_ON, assuming that there can be continous
velocity synths, has
a voice has to be started. Maybe not. Maybe the synth can report that it
has N voices on at all times. Hmm. Still, VOICE_ALLOC is akin to note_on.
Also, keep in mind that any feedback of this kind
requires a real
connection in the reverse direction. This makes the API and hosts
more complex - and I still can't see any benefit, really.
We already have a rudimentary reverse path.
So, how do you perform voice stealing?
You have to tell the host/sender when a voice index becomes invalid,
yep - as you point out, it requires 1-block latency.
It has none of
the problems of VVIDs.
Probably not, if I understand the above correctly.
The only problem is that it requires dialog.
That's a rather serious problem, OTOH...
And that is what I am not convinced of - I'm not against VVIDs, I just want
to play it out..
* no carving
of a VVID namespace for controller plugins
No, plugins have to do that in real time instead.
No, plugins have a fixed namespace - they dole out real VIDs to whomever
asks for them. Are VVIDs global or per-plugin? Sorry, I forget what we had
decided on that..
/* find a
vvid that is not currently playing */
do {
this_vvid = vvid_next++;
while (vvid_is_active(this_vvid);
Again, this is voice allocation. Leave this to the synth.
You have a pool of VVIDs. Some of them are long-lasting. Some are short
lasting. You always want to find the LRU VVID. If there are available
VVIDs, take the LRU free one. If there are not, you either need to
voice-steal at the host or alloc more VVIDs. Right?
Tim