[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MIDI driver for MiNTnet
Whoops! Someone accidentally got a message from me earlier, that was
meant for the list. I _hate_ this software (pegasus mail on a PC (DOS
version)).
Anyway, what I basically said was:-
> Yah, actually you could hide IP-packets in MIDI SYSEX packets, and
> just use channel numbers as the MAC-layer addresses. This way you
> could possibly even keep your computers coexisting with your MIDI
> instruments.
MIDI sysex (system exclusive) is so called because it is sent to the
whole system (i.e. it has no channel number, so everything, on any
MIDI channel will "see" it), but is exclusive to a particular device.
Essentially it consists of a header, usually two identifiers, as much
information as you care to squirt down the line, and an EOX (end of
sysex) command.
The two identifiers are: 1) a manufacturers ID. These are given out
by the international MIDI standards committee, but there is a
universal "development" ID that could be used for MiNT (I won't tell
them if you don't). 2) An identifier (usually) specific to the device
being addressed (i.e. the particular type of synth). This can be
anything you like (who said IP address????).
Following that is the data, then the EOX. Bear in mind that the
header and EOX are specific 8 bit values, whereas the data itself
(including the IDs) are restricted to 7 bits of data. Alternatively
you could look at it as being 7 bits all round, with the top bit
determining which messages are MIDI status information.
By embedding any data in sysex like this, the whole system could be
made to operate cooperatively with other MIDI data. Admittedly the
headers and stuff are a bit of a PITA, but it would have it's
benefits. For example, it would be possible to use the same MIDI
setup for networking and music (even simultaneously, if someone wrote
some suitable software!) - at least playing a keyboard wouldn't stuff
up the network, and network traffic wouldn't re-program a synth.
Also, it removes the MIDI restriction of 16 channels, since sysex
isn't channelised, it would just be the IP addresses that are
important.
I can dig out all the relevent info if anyone seriously wants to
tackle this.
On the hardware side of things, all Ataris have a MIDI THRU port, but
Atari (in their infiniteless wisdom) decided to wire it to some
"spare" pins on the MIDI out. In practice, this would be useless for
a network, anyway, since it is hard wired straight through - put the
devices in a loop, and watch your messages circulate forever!
In practice, anything at the IN would need to be echoed OUT again,
unless it was being blocked for whatever reason. If the system is to
happily coexist with MIDI instruments, though, there would need to be
a way to optionally block non sysex messages. Take the folowing
example:-
+---->COMPUTER1---->SYNTH1---->COMPUTER2---->SYNTH2----+
| |
+------------------------------------------------------+
A MiNT network would work fine, provided the computers block their
own messages, but what if a key is pressed on synth1? C2 can't
_always_ block non sysex, since the note might be meant for synth2,
but C1 has to block it, or S1 will see it again, and possibly play it
when it's not meant to. As will S2.....
Obviously for a coexistant system, there'd need to be a bit of
processing on the IN->OUT chain. Of course, only an idiot would
connect their synths as above - but the world's full of them!
Incidentally, the above could be solved if the synths were connected
on a spur from the main loop. MIDI for music doesn't need a loop
topology.
Cheers,
Xav
--
Xav
E-mail: mbge4mdc@fs1.ee.man.ac.uk
Web: http://cerebus.lamp.ac.uk/~xav/xav.html
"It's who I am, it's what I do - I can't change" - Sledge Hammer