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 ---