Seriously, though; there has to be *one* of
DETACH_VVID and
VOICE_ALLOCATE. From the implementation POV, it seems to me that they
are essentially equivalent, as both are effectively used when you
want to say "I'll use this VVID for a new context from now on."
VOICE_ALLOCATE is obviously closer to the right name for that action.
Agreed - they are semantically the same. The question is whether or not it
has a counterpart to say that init-time controls are done. As for
redundancy - I see it as minimum requirement. Suppose I want to turn a
voice on with no control changes from the default (no velocity, nothing). I
need to send SOMETHING to say "connect this VVID to a voice". The minimum
required is a VOICE_ON or similar. For something that has no per-voice
controls (e.g. a white-noise machine) you still need to send some event.
And I'd rather see the voice-on protocol be consistent for all instruments.
If that means you have to send two events (VOICE_ALLOC, VOICE_ON) for the
white-noise maker, then I can live with that.
Tim