On Mon, 16 Feb 2015, Harry van Haaren wrote:
2. I had not
heard of MIDI-over-OSC.
Yes - almost everything is possible with OSC - any form of data can be
passed around as a "blob" of binary data, timestamps are available to
be used for timing, and "bundles" can be used to have multiple events
be processed at exactly the same time.
Sequential handling? Yes - unless in a bundle.
Bandwidth: unlimited.
I had not heard of it either, but while reading the documentation on liblo
(an OSC lib) I found there is a function just for sending MIDI events.
Note that this is a 4 byte event only, not sysex.
I don't know if there are size limits to OSC blobs... but when one wants
to do data over ip of any size, timing becomes secondary because both ends
will need time to deal with 1000 patches... why use OSC? there are lots of
ways to send a config file of any size over IP already. It has always been
up to the designer how they use sysex anyway and how transparent they
decide to make it. Some have been very transparent and well documented so
that others could make things like patch editors. Others have been just a
binary blob, storable, but not easy to edit.
To sum up - JACK MIDI is awesome - its widely used, it
is
sample-accurate within the JACK graph, and events can occur at exactly
the same times. With the QMidiNet project, broadcasting JACK MIDI over
the network is possible,
http://qmidinet.sourceforge.net/qmidinet-index.html
netjack can also extend jack MIDI across the net.
For 99% plus music performance use, MIDI is not really out of date. That
is why all keyboard/synths still come with it. The connector has been
suplemented with USB for higher speed/throughput, but not much else has
changed. Pitch bending still produces more data than is easy to handle...
do we really want higher resolution? More channels? How many keyboards
will I play at a time? Even with two kb they are probably USB anymore and
so show up as two separate MIDI devices (32 channels).
Maybe some of the things we want to do with MIDI should be done with
something else. MMA is working a thing called HD (not MIDI they say) that
has bigger everything. I am kind of shy of anything called HD any more as
being hype. I think there are better ways of dealing with control surfaces
than repurposing MIDI (or expanding MIDI).
In my mind, the Mackie control surface shows how really bad MIDI is for
that use. Almost the whole thing is on channel one... execpt 9 faders take
7 channels of "Pitch bend?" The whole thing is a kludge to make MIDI fit
where it really doesn't. MCP is a one horse game, it was made for one
DAW... it is just the fact that people can see what the data is that it
sends for each move (there is documentation) that has allowed other DAWs
to use it. If anyone was to build a control surface for a well known top
selling DAW that used OSC, those OSC commands would have become "standard"
in the same way. The difference being that any OSC set of commands I can
think of would have been expandable.
All this to say (I think) that to make OSC something people use requires a
great piece of hardware that works well with the most used DAW. Get that
DAW to suggest this is "THE" control surface to use to get the most out of
your SW.
I think OSC is missing parts though (just like AES67?). I should be able
to add a control surface/keyboard to a network and the unit should show me
every other unit (SW or HW) that it can talk to. From that list I should
be able to connect my output to a number of inputs and connect my input to
whatever output. Then if I play notes on a keyboard I should get the right
sounds, or move a control the right thing should change. That is a lot of
things to happen. My controller has to be able to set it's networking up
and then discover what other OSC stuff is around. OSC right now seems to
be totally manual. The user has to know the target IP and port (99%
musicians just blanked out) and have the server running and enter those
things just to have a connection. Even with a standard set of commands
this is already a fail.
I think this is the reason MIDI is still going strong, plug a
keyboard/controller into MIDI/USB, the SW shows the available MIDI ports,
the user selects the one they want... done ready to role. Going beyond
MIDI requires something at least as good.
--
Len Ovens
www.ovenwerks.net