Steve Harris wrote:
Even if it is 100usec it's still a negligible amount of time.
No, the roundtrip latency is *at least* 100usecs (or whatever), the hardware
will keep re-transmitting until the packets get through.
Keep in mind serial MIDI is relatibely slow, press a 7 key chord and the 7th key will sound 6msec later than the 1st one.
Still people are not complaining and MIDI has survived for decades as the intercommunication standard between musical instruments.
In pratice people dont really demand hard realtime and it will be OK, but
the maximum time taken to transmit a UDP packet is unbounded, it uses
exponential backoff IIRC.
But this is on a non switched ethernet network.
In a non congested, switched network no backoff mechanism is needed because each ethernet port can get the full 100Mbit.
This means if you don't saturate the network the UDP packet will get sent at the first.
If you do pure host A -> host B communication it is impossible to saturate the network since
the sender will send back to back packets and the receiver will be able to receive them all (given enough CPU speed).
But we are talking of relatively sparse events.
For example assume we send only note on and note off messages. (3 bytes).
If you have a real serial midi interface you can do max about 1000 messages/sec and even average switches can switch
10000 ethernet frames/sec which means you can easily pipe a fully utilized serial midi stream (coming from a real MIDI device)
into the 100Mbit network where you store only one MIDI message per packet and you still use 10% of the switching capacity
of switch (and ethernet cards).
An even greater efficiency (but it would introduce 1-2msec latency) could be achieved to gather incoming MIDI data from
the real MIDI device and send them in batches perhaps along with audio data.
(see the proposal I made some time ago for audio/midi over JACK).
That way you get full timestamping for MIDI (you can trigger sample accurate MIDI events) and you send much less packets
around thus allowing for dozen concurrent audio/midi streams on a single 100Mbit network.
For example a stereo stream of 128 audio frames (32bit floats) per packet would consume 1024bytes, and since ethernet packets
are 1500bytes you could use the rest for timestamped midi.
When I get some time will make a few proof of concept tests and measurements to see if it is viable. (but I'm 99.9% sure it will
work well becaue there is already solution of audio/midi over ethernet on Windows VST , see www.fx-max.com which seems to work well
and hollywood composers love it because they have large softsamplers/HDR setups which they use for their film scoring.
cheers, Benno