> 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