Re: [LAD] MIDI-2-TCP, TCP-2-MIDI

From: Len Ovens <len@email-addr-hidden>
Date: Tue Sep 04 2018 - 00:57:17 EEST

On Mon, 3 Sep 2018, Jonathan E. Brickman wrote:

> Indeed, MIDI's 31.25 kbps gives (because of its 8+2 bit protocol) a rough upper
> cap of 1500+ datacommands (including notes and timing blips...) per second, notes
> being one byte per command, one more for value. And even if we use the old (and
> lately often obsolete) 50% rule, that's still 750+ items per second.  

A note on or note off is three bytes, chanel/command, note and velocity.
Running status (first byte doesn't change from event to event) allows a
second note on in the same chanel to omit the first byte. This is why some
controllers send note off as a note on with velocity 0. Using note on and
note off means note, release, note is 9 bytes rather than 7 bytes for note
on on_with_0_velocity, on. Anyway, 1k is about the highest one can expect
on a per event basis. "Realtime" events are single byte and patch events
are two bytes. rpn and nrpn events are a minimum of 9 - 12 bytes for the
first one sent but may be a little as 3 for a next value.... though good
practice pretty much demands sending the whole 12 bytes every time.

Jack always converts incoming midi to full three byte events. I do not
know if it sends using running status to hardware devices.

All midi "mixing" requires converting to full events as well as queuing
bytes event at a time.

> It would certainly be nice to blow all of those numbers away by two or three
> orders of magnitude! And it would be gorgeous to have MIDI data simply pervade an
> IP stage network, or an IP instrument network, or one multi-instrument box
> through localhost, or a stack-of-Raspberry-Pis network, or a creative combo. I
> don't like the idea of using CAT5e generally on stage, because MIDI DINs are just

There are high use/cycle cat connectors and cables designed for this kind
of use. Take a look at almost anyone who sells network snakes or stage boxes.
Most of these cables are 100 foot cables :) but I am sure shorter cables
(or longer) can be had. Yes this would mean adding the matching connectors
on each of the boxes you wanted to connect.

> In the last day or two I have been playing with the Mido library's documentation
> examples, and just now found much more apparently practical examples:
>
> https://github.com/olemb/mido/tree/master/examples
>
> including what looks like two actual JACK<-->RTP-MIDI bridges in the 'ports' and
> 'sockets' subsections. Will be studying. Seeking much input :-)

It would be interesting to know what the throughput and latency is with
that setup. I have never thought of python as being particularly great for
real time applications. However, something that works is a great start.
The road from python to c or c++ is not too bumpy depending on the
librarys used.

--
Len Ovens
www.ovenwerks.net

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Tue Sep 4 04:15:01 2018

This archive was generated by hypermail 2.1.8 : Tue Sep 04 2018 - 04:15:01 EEST