Network MIDI was invented sometime around 2004 to send MIDI messages over an IP network. To handle network loss, a protocol known as RTP-MIDI was created and documented as RFC-4695. Network MIDI is built into OSX computers and iOS devices. Apple music creators think nothing of connecting MIDI equipment using Ethernet and WiFi, instead of MIDI cables.
Sometime around 2009, Network MIDI was built into iPads and iPhones. This made building touch-based control surface Apps easy, and ensured they integrated with MIDI Workstations over WiFi. While this capability created many cool demos, the unpredictable latency and jitter of WiFi made MIDI-over-WiFi not attractive where timing is important. MIDI-over-Bluetooth became a standard in the last few years, and seems to be the preferred method for sending MIDI over wireless links.
But Network MIDI persists, and new implementations of the protocol as software pop up, as do new hardware products implementing the protocol. This article is a round-up of some of the implementations available in 2019.
McLaren Labs rtpmidi for Linux: https://mclarenlabs.com
Of course, our own implementation. It implements a full suite of MIDI messages and full Journal protection and recovery for the messages most necessary for realtime performance It uses Avahi for Bonjour service discovery, but can also call IP addresses directly. Our target audience is Enthusiasts of various levels. Ports are provided for Raspberry Pi and Ubuntu.
A full implementation of the Recovery Journal error-correcting mechanism means that “hanging notes” will not occur, even in the face of network packet losses. The McLaren Labs Recovery Journal algorithm was developed for piano players – and even the damper pedal algorithm has been given intense scrutiny.
This is the newest open-source implementation. Just released this year, this project is starting with a fresh, clean implementation in C++. The code is well organized and the project looks promising. At the current time, it implements session creation and the sending of the essential MIDI messages. It does not seem to currently implement the Recovery Journal feature of the protocol, but it does use Bonjour for service discovery.
Ravelox MIDI: https://github.com/ravelox/pimidi
This open-source project is just a few years old, and it’s well-suited to Raspberry-Pi. It is designed to send MIDI information via Network MIDI to a target like a synthesizer or drum machine. It has been evolving and now has Journal support for some events. It also seems to interface with Bonjour. There are some nice blog write-ups about it. Read about raveloxmidi v0.7.8 here: https://www.raveloxprojects.com/blog/?p=630. There are a lot of cool projects on the blog worth taking a look at too. You’ll find Youtube videos using Ravelox MIDI too.
Aduino AppleMIDI-Library: https://github.com/lathoub/Arduino-AppleMIDI-Library
This is a very small code library suitable for running on an Arduino. It can send and receive all MIDI messages. It does not seem to implement the Recovery Journal. At the present time, it does not provide Bonjour service advertisement. This library is well suited for building MIDI control surfaces using an Arduino and sending events via Ethernet to a MIDI workstation. Since the Arduino won’t advertise itself over Bonjour directly, you’ll need to connect to an Arduino using this library via its IP address.
An excerpt of the README file of the project is quoted below. This project is actively maintained and evolving.
“This is a node js implementation of Apples Network Midi Protocol aka RTP Midi. It can act as both a session initiator and session listener. I can also detect remote sessions via bonjour/mdns. The recovery journal is not supported at the moment.”
iConnectivity mio4: https://www.iconnectivity.com/products/midi/mio4
This device is a universal connector for sending MIDI messages over Ethernet, USB and the standard 5-Pin DIN connector. There are a number of 5-pin connectors.
There is also a great article about Network MIDI. We couldn’t have said it better ourselves!
Kiss-Box provides a very mature network solution for MIDI over Ethernet designed for professional applications. Kiss-box solutions transmit more than just MIDI, and can handle DMX, timecode, and more. Theirs is a complete hardware solution.
Tobias Erichsen rtpMIDI: https://www.tobias-erichsen.de
Tobias’ implementation is a very mature software product for Windows. It is feature compatible with OSX. It implements the full Recovery Journal and uses service discovery over Bonjour. The author distributes rtpMIDI as freeware and also freely distributes a library for building your own Network-MIDI applications.
During the gestation of this product, Tobias developed Wireshark plugins for dissecting RTP-MIDI traffic. He’s done all of this work without expectation of payment.
Apple Network MIDI:
The standard implementation of the protocol is by Apple and is included in OSX and IOS.
TouchDAW for Android: https://www.humatic.de
TouchDAW is an touch-enabled control surface designed for Android. It implements the RTP-MIDI protocol so that it can interface with the rest of the Network-MIDI ecosystem. Humatic also distributes an Android library that others can build into their products. https://www.humatic.de/htools/nmj/
Network MIDI is a alive and well in 2019. It continues to find applications in Music development as well as Show and Lighting control. Most multimedia presentation frameworks can send and receive MIDI messages, and the fact that Network MIDI is a protocol with a near ubiquitous implementation on a variety of Operating Systems makes it attractive for all sorts of things.
So try it out, and support your developers. If you like these tools and products, send a little love their way!