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

David Olofson david at olofson.net
Tue Jan 7 09:57:01 UTC 2003


On Tuesday 07 January 2003 15.08, Steve Harris wrote:
> On Tue, Jan 07, 2003 at 01:49:23 +0100, David Olofson wrote:
> > > > The issue here is this: Where does control data go when there
> > > > is no voice assigned to the VVID?
> > >
> > > They get thrown away.
> >
> > Right - so you can't play a polyphonic synth with a continous
> > velocity controller, unless you track and re-send the controls
> > that the synth happens to treat as note parameters.
>
> I dont understand why.

It's obvious when you consider that "VVID has no voice" can happen 
*before* the synth decides to start the voice; not just after a voice 
has detached from the VVID as a result of voice stealing. At that 
point, only the value of the control that triggered "voice on" will 
be present; all other controls have been lost. Unless the host/sender 
is somehow forced to resend the values, the synth will have to use 
default values or something.


> > > Well, I thinik its OK, because the note will not be used to
> > > render any samples until after all the events have been
> > > processed.
> >
> > But who guarantees that whatever the "trigger" event is, also
> > comes with events for the "parameter" controls? It's trivial (but
> > still has to be done!) with explicit NOTE_ON events when assuming
> > that NOTE_ON means "allocate and start voice NOW", but it's not
> > at all possible if the synth triggers on voice control changes.
>
> I dont think that matters, eg. my favourite exmaple, the gong
> synth. If you issue a voice on it will initialise the gong graph in
> its stabel state, and when you sned a velocity signal (or whatever)
> it will simulate a beater striking it.

Yeah - that's a perfect example of "allocate voice on first use of 
VVID". This breaks down when you run out of physical voices, unless 
you do instant voice stealing upon "allocate new voice for VVID". (It 
might make sense to just do it that way, but it definitely is a waste 
of resources if allocating a voice is frequently done before the 
synth actually decides to start playing.)


> > > > If you really want to your voice allocator to be able to turn
> > > > down requests based on "parameters"
> > >
> > > I think this would be complex.
> >
> > Not more complex than any "note-on latched" controls - and I
> > don't think it's realistic to eliminate those.
>
> There is a difference between "turning down" (implies
> communicating) and ignoring (silent).

"Turning down" was meant as seen from the synth implementation POV. 
That is, if a synth "turns down" a voice allocation for a VVID, that 
VVID just gets routed to "the NULL Voice". Future events with that 
VVID are ignored.


//David Olofson - Programmer, Composer, Open Source Advocate

.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
   --- http://olofson.net --- http://www.reologica.se ---



More information about the Linux-audio-dev mailing list