The main difficulty I see with the VVID system is how
to initialize
parameters on a new voice before the voice is activated with a VoiceOn
event.
After, or rather - at the same time. The host just has to make sure the
VoiceOn arrives first. This is what is currently in the header in my
working dir.
Send a new VVID to the VOICE control with timestamp X for note-on
Send any initial voice-params with timestamp X
Send 0-VVID to the VOICE contol with timestamp Y for note-off
Alternatively, rather than a VOICE control, just have special
VOICE_ON/VOICE_OFF events.
-first- order on timestamps
-second- put voice-on ahead of all other event types.
A little ungainly, but effective as it frees the plugins to assume that
they'll get voice-on first but must consider all other events on that
timestamp as arguments to the initialization of the voice. Of course this
not all events with that timestamp - only per-voice controls with the VVID
that was just turned on. All per-voice events have a VVID. So it is easy
to know if that VVID is active - if not, the host screwed up.
What I am still fighting with is the idea that the host pre-allocates VVID
space. How much space for each VVID? Any imposed structure?
Tim