MIDI over Ethernet

Typically people use MIDI for transfer of musical information. But there is a considerable need to transfer MIDI commands from other non-MIDI equipment like industrial PLC or multimedia controllers to operate MIDI sound equipment. Especially in latter case, Ethernet may be well used as a bridge between incompatible systems.

Transfer of MIDI data over Ethernet is baud rate independent. Furthermore, MIDI messages may be used as a context independent binary command structure which has some abilitiy to synchronize itself due to the clear difference between status and data bytes.

Essentially 3 different situations are possible:
1. When you are writing your own PC-based control software, you simply have to open a TCP or UDP socket with appropriate IP and port parameters and build your own user interface.
2. If you are using a software with built-in TCP or UDP interface, which is able to handle arbitrary transfer of 8 bit data bytes, the situation is even easier.
3. Specific MIDI oriented software (like sequencers or MIDI file recorder/players) however usually can open only registered MIDI ports. This is a commonly known barrier for use of MIDI over Ethernet. A well working solution for this problem is provided by the ipMIDI software driver (download at www.nerds.de ).

When installed on a Windows or Macintosh PC, during the boot process ipMIDI installs a set of registered virtual MIDI ports. These ports are seen and accepted by MIDI software.
Then for communication via Ethernet, a multicast UPD socket is opened.
Multicast is essentially based on UDP datagrams, but uses a special class of Ethernet IP addresses (class D network). It is primarily designed for distribution of streaming media.
Use of multicast in other context (here specifically to distribute MIDI messages) has many advantages, but some restrictions, too. In the context used here it has the advantage to be laid over the specific IP configuration of the local network and the network adaptor of the PC has not to be reconfigurated. The biggest disadvantage is that many wireless devices, like smartphones, tablets, lower hardware level products like Arduino, Raspberry Pi or homebrew devices (with Roving Wifly, Wiznet or similar Wifi modules) may not support multicast (for a solution to handle this, see below).

To use the ipMIDI driver, 2 steps have to be performed:
--- First install the ipMIDI driver following the instructions given there. A detailled manual of ipMIDI is installed together with the software. After installation the computer has to be rebooted. The ipMIDI driver starts automatically now and furthermore any time the PC is booted (the free trial version is only active for 60 minutes after boot). You will find an icon ipMIDI on your system tray or in your Start menu folder. Open it, we recommend to deactivate "local echo" and mute all ports except no.1 (which is assigned to ethernet port no 21928). Other settings are possible, but this one is most easy to start with.
Now start your MIDI software and check if a MIDI IN and a MIDI OUT port named "1.Ethernet MIDI" is available there. It can be used like any MIDI port else found on the PC.
--- Configure IP address and port of the Ethernet/MIDI device for the UDP multicast mode.
The IP address for UDP has to be set to 225.0.0.37 and the ports for source and destination should be set correspondingly to 21928.


In some cases however, it is more comfortable or necessary to use the existing network configuration or even more simple network types like "peer to peer" or "limited access point" which do not support multicasting. To connect MIDI software with Ethernet devices in these cases, the simple WindowsTM console style software MIDI2UPD was developed, which is able to connect a real or virtual MIDI port with any IP and port using point-to point UDP. (A corresponding TCP client solution is under development).

Download "MIDI2UDP.ZIP". MIDI2UDP is provided 'as is' -- without any warranty.

screenshot

When the software is started, first the MIDI OUT port and the MIDI IN port are selected from a list. Next the desired IP address and source/destination ports are selected by number. By keyboard stroke CTRL-P the selection is saved in the file MIDI2UDP.SET. After then the I/O selection is reloaded during every start of the software. A new selection of MIDI ports is possible at any time by keystroke CTRL-N. A new selection of UDP access parameters is possible at any time by keystroke CTRL-U. Else this software works silently in the background and may be shrinked into the task bar. Though it is a user mode application, effectively it works like a driver.

MIDI2UDP cannot be operated standalone. A set of "virtual MIDI cables" is necessary. MIDI2UDP has been tested with loopBE (download from www.nerds.de) and Maple VMidi cable (download from www.maplemidi.com and other servers). Connection to real MIDI ports of the computer, like MPU-401, is possible, too.


* State of information December 2013.
* Right of technical modifications reserved. Information based on best knowledge - without any warranty. Any responsibility is excluded.
* This description is for information only, without any warranty. No product specifications are assured in juridical sense.
* Trademarks and product names cited in this text are property of their respective owners.