[linux-audio-dev] Weekend developments (NetMIDI is no longer vaporware)

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] Weekend developments (NetMIDI is no longer vaporware)
From: David Slomin (dgslomin_AT_CS.Princeton.EDU)
Date: ti syys   21 1999 - 21:44:13 EDT


Hi guys --

  I didn't get much further with Songpad, but I did code up some stuff
that will play very well with it...

  I'm happy to say that NetMIDI (remember that?!) is no longer vaporware.
Based on the success of my little MIDI-messages-over-pipes toys, I decided
that my non-timestamped, raw-MIDI-messages-over-***-transport model really
worked, at least for my own home experiments. People who need extreme
precision will be busy installing Audiality anyway, right?

   Thus, I wrote a pair of programs. One listens on a pipe (named or
stdin) and writes to a socket. The other listens on a socket and writes
to a pipe (named or stdout). You can use these in conjunction with any of
my other MIDI toys to send MIDI between computers in realtime without MIDI
cables. I even started work on a Windows program (let's all get together
in a rousing Bronx cheer for MFC; to keep my sanity I had to switch to Wx)
that translates between NetMIDI and Windows MME MIDI, so my FIFO-MIDI toys
can mix and match with Cakewalk. When I finish the Windows one, I'll
write up a decent web page for the stuff, but for now, you can download
the new toys from my transfer directory...
"http://patriot.altavista-software.com/~div/xfr/".

   The actual implementation of NetMIDI turned out to be much less complex
than what I talked about on the NetMIDI web site
("http://patriot.altavista-software.com/~div/projects/netmidi/"). I
decided not to use a central coordinating server. Rather, a NetMIDI
connection is a one-way TCP connection, very similar to a pipe (no, I
don't use some funky TCP option to do this, I just don't use the other
direction). Any "MIDI in" thus listens on a TCP port, and a "MIDI out"
makes a TCP connection to it directly. There is no handshake phase of the
session; it starts sending data immediately, just like with a pipe.

   Now that I have this, I could potentially write Songpad in pure Java.
I could have done it with FIFO-MIDI in pure Java (since FIFOs can be used
via Java's generic file I/O routines), but most non-Unix platforms don't
have FIFOs, so I wouldn't get very far with that. However, sockets work
fine from Java on all platforms, so with NetMIDI it would work. That
said, I'll still probably do it in native code for performance reasons,
but I'll probably ship with both, so you can choose at runtime.

Div.

P.S. Here and there I've heard mention of something called "netcat" which
sounds somewhat similar to my little pipe-to-socket programs. Has anybody
tried this? Have an URL?


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:27:12 EST