Re: [linux-audio-dev] more on XAP Virtual Voice ID system

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] more on XAP Virtual Voice ID system
From: Tim Hockin (thockin_AT_hockin.org)
Date: Thu Jan 09 2003 - 00:55:40 EET


> 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


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu Jan 09 2003 - 00:57:49 EET