On Wednesday 24 March 2010, at 22.21.53, "Jeff McClintock"
<jef(a)synthedit.com>
wrote:
From: David
Olofson <david(a)olofson.net>
These issues seem orthogonal to me. Addressing individual notes is just a
matter of providing some more information. You could think of it as MIDI
using
note pitch as an "implicit" note/voice ID. NoteOff uses pitch to
"address" notes - and so does Poly Pressure, BTW!
Not exactly note-pitch. That's a common simplification/myth.
MIDI uses 'key-number'. E.g. key number 12 is *usually* tuned to C0, but
is easily re-tuned to C1, two keys can be tuned to the same pitch yet
still be addressed independently.
It's a common shortcut to say MIDI-key-number 'is the pitch', it's
actually an index into a table of pitches. Synths can switch that tuning
table to handle other scales.
True. My point was really just that pitch is somehow "hardwired" to the key
number on the receiver end, rather than explicitly specified by some CC or
similar.
(Well, there is the SysEx extension you mentioned, but that's not helping much
unless you have the bandwidth to spare, and equipment that supports it - but
that goes for the existing and proposed alternatives as well.)
[...]
Virtual voices
are used by the "sender" to define and
address contexts, whereas the actual management of physical voices is
done on the receiving end.
You have re-invented MIDI with different nomenclature ;-).
Precisely. Or, I just solved the problem in the most straightforward way I
could think of. Design and implementation done in a few hours. (Ok; it's a
pretty high level language, but still. Maybe I can score a bonus point for
having designed and implemented the language too? ;-)
I could add SysEx key-based control to the MIDI parser, of course - but I'm
still wondering where I'd get such data from anyway! Perpetuating the
catch-22, that is; sorry about that. :-)
So... How about a library for sending and parsing MIDI with these SysEx
extensions? I'm thinking along the lines of providing a nice API, but using an
existing standard protocol. The idea would be to use ALSA and/or JACK (would
need an extension for SysEx, or does it support that these days?) for
transport layer, to avoid reinventing that too.
Later, when the API has proved to work, and stuff can be wired, one might add
more efficient protocols and transport layers for special cases, such as
between JACK clients, or between plugin hosts and plugins. (LV2 extension?)
Or, one starts with that, just looking at the feature set of MIDI + SysEx, and
add MIDI gateways later, if/when needed. Depends on how widespread support for
these extensions is, I guess.
Just thinking out loud here...
--
//David Olofson - Developer, Artist, Open Source Advocate
.--- Games, examples, libraries, scripting, sound, music, graphics ---.
|
http://olofson.net http://kobodeluxe.com http://audiality.org |
|
http://eel.olofson.net http://zeespace.net http://reologica.se |
'---------------------------------------------------------------------'