On Friday 17 January 2003 12.25, Fons Adriaensen wrote:
Following the discussion on VVIDs, I've been
thinking about how the
MIDI protocol could be modified to encompass explicit contexts. To
my surprise, this would quite simple. I'll call the new protocol
ECMP (Explicit Context Midi Protocol -- just a working name). Key
features are:
[...]
The major problem with anything like this is that it's not compatible
with any standard protocol. Practically *everything* that deals with
MIDI actively parses and processes messages one way or anonther, so
changing the format in any way will cause applications, drivers, h/w
synths and pretty much everything else, including some MIDI
interfaces, to fail.
I think it will have to make use of standard messages, so it can work
with existing implementations (sequencers, synths etc), or there
won't be much use for it. If you're going to make low level changes,
you may as well implement a completely new protocol, eliminating the
restrictions that still remain in this modified MIDI protocol, or
better, use an existing alternative protocol. (DMIDI?)
As to doing something over standard MIDI, how about this:
* Reserve a few ranges of CCs as Voice Controls.
(Say, 4 ranges of 8 CCs each.)
* Use the first CC in each range for "Voice ID".
* Interpret pitch fields of MIDI events as Voice IDs.
* Make pitch/Voice ID 0 illegal, so you can use it
to detach Voice Controls completely.
* When a Voice ID of a CC range is set, that range
is attached to the indicated Voice ID. Controls
in the range now affect only notes playend with
this pitch/Voice ID.
* Use the second Voice Control of each range for
pitch, replacing the pitch of the RT messages,
so those can be used as pure Voice IDs.
* Use the rest of the Voice Controls for whatever
you like. (Pitch bend, pan, modulation,...)
Of course, you can use NRPNs or SysEx for the Voice Controls, but
that will result in higher bandwidth. Doesn't matter unless you're
running on 31250 bps wires, of course.
BTW, this is probably not far from what the existing SysEx based
standard is doing. It's just that very few sequencers and synths seem
to support that, but something like the above has the exact same
problem. It's only *slightly* more compatible with existing
implementations - although probably not in a very useful way.
//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 ---