Due to the fact that the MIDI transmission interface is completely digital, without any changes, MIDI data packets can be transmitted via more modern and faster interfaces. MIDI Manufacturers Association understood that MIDI had become a fairly popular standard for working in various industries, but at the same time the development of this standard rested on the technical features of the physical serial interface on which MIDI was based. And then the MMA association began to look in the direction of other successful data transfer technologies in order to get away from the technical shortcomings that the old data transfer interface imposed. And as a result, new MIDI transmission technologies began to appear.
RTP (Real-time Transport Protocol) is a high-level protocol that is based on UDP transport protocol but at the same time has its own advantages, which were specially designed for streaming Audio and Video. The main feature is that each data packet of this protocol has an absolute sending time in the header, which can be read by the receiving device and determine the delay and order of message delivery. Such advantages were ideally suited for MIDI and in 2004 the first version of the RTP-MIDI protocol was born. Later, Apple included this protocol into its operating systems and actively improved it. And as a result of this, the protocol received the second name Apple MIDI. Later, a separate driver was written for Windows and Linux, which also allowed use this protocol in these systems.
This protocol is based on the physical Ethernet interface and as a result, RTP-MIDI will inherit all the advantages of this data interface. Now we are not limited to a work distance of 15 meters. Thanks to Ethernet, now we can transmit MIDI for many kilometres, without loss and significant delays. Accordingly, in order to use the RTP-MIDI protocol, initially it is necessary to create the network in which all our network clients will be located.
Let's talk about the ideology of this protocol. In RTP-MIDI there is such a thing as “Session”. A session is a virtual environment to which clients can connect in order to exchange MIDI messages. To begin with, in the network must be the one who creates this session. It can be either a computer or another device. The creator of the session will be the master device or in RTP-MIDI terminology “Session Initializer”. After a session is created on the network, other clients can connect to it and become participants in this session. Several sessions can be created on the same network, and they can work independently. But at the same time, the convenience lies in the fact that the client himself can choose which session he needs to connect to. After the client has become a participant in the session, virtual MIDI ports appear in the client’s operating system, which applications can use to receive and transmit MIDI signals.
One of the important advantages of RTP-MIDI is that already at the level of this protocol, schemes for splitting and merging MIDI signals are implemented. Above is the simplest scheme of message transport between different participants in a session. Where it can be seen that device number one is the initiator of the session to which other network participants are connected. When you send a MIDI message from the master device (Device1), this message is automatically duplicated to all other clients. But at the same time, if messages are sent by other session clients (Device2 and Device3), then they will be received only by the session initiator, i.e. device number one. And these messages will automatically be merged and routed to its virtual MIDI IN port.
Since RTP-MIDI is essentially just a way to transmit MIDI over Ethernet, everything about the MIDI protocol remains the same, the only difference is the way it delivers MIDI messages. For this reason, I propose to make an example of how to create an RTP-MIDI session and how to connect clients to transmit MIDI data. So that in the future you decide for yourself whether to use physical MIDI cards and cabeling for work and experiments or to use the network alternative to RTP-MIDI.
Above is a list of operating systems, and the name of the programs that add the ability to work with the RTP-MIDI protocol to the system.
Some programmers who read this article may ask, where is Linux? There are libraries that allow you to integrate support for this protocol into a separate program at the time of development of the application by programmers. These libraries are available for all operating systems, including Linux. Applications for Windows and Android were written by enthusiast programmers who shared their programs openly, for which many thanks to them.
If you are a user of Apple devices, then you do not need to install anything, as I said, RTP-MIDI is already integrated into MAC OS and iOS systems. But for other operating systems you need to download special drivers and software.
I propose to create a session in the MAC OS system. The Windows application looks absolutely identical with the same interface and functionality.
And so, to open the menu for working with RTP-MIDI in MAC OS, go to the Applications folder and open the “Audio MIDI Setup” application. If an audio settings window opens in front of you, without a MIDI window, open Window in the menu bar and click on the Show MIDI Studio option in the drop-down menu and a window containing MIDI devices will open in front of you.
To work with RTP-MIDI, we need to click on the globe icon in the upper right corner. Let's see what's what.
And so, to create a new connection is necessary:
1. Create a new session, for this, click the “Plus” button Below the My Sessions window.
2. Below the Sessions section, on the right side of the RTP-MIDI settings window, you must specify the port number that will be used to transmit and receive this protocol. As we recall, RTP-MIDI uses the low-level UDP protocol, and as a result, for receiving and transmitting data, we must specify a specific port. By default, RTP-MIDI uses port 5004, but if this port is already occupied by whatever application, we can specify any other free port.
3. Next, you must specify the Local name, this is the name of the virtual MIDI card that will be used in our system. And you must also specify the Bonjour name, this is the name of the session that clients on the network will see.
4. Now you need to activate the session, for this you need to check the box against the Enabled top of the Session window.
5. And it is also necessary to configure a security rule that allows you to configure the connection rights to the session. In the lower part of the RTP-MIDI settings window from the left, open the “Who can connect to me:” drop-down list and select one of the options. Since clients themselves can connect to the session, sometimes you need to limit the connection rules.
6. If you need to add a new client manually, click the “Plus” button below the “Directory” window and enter the name, address and port of the client who should be a member of your session.
7. And in the end, to add clients to your session, select the device in the “Directory” window and click the “Connect” button. If the client is successfully added to the session, it will appear in the “Participants:” window
I would also like to mention a very convenient option that allows you to redirect MIDI streams from a session to a physical device and vice versa. To do this, in the lower right part of the program, against “Live routings” open the necessary list of equipment for input or output and select the MIDI port to which you want to direct the stream from the session or vice versa, send the stream to the session. In this case, our computer acts as a converter that converts between itself physical MIDI and network RTP-MIDI.
In addition to computers and smartphones, some synchronization controllers also support RTP-MIDI. For example, KISSBOX MIDI2TR that you already met in previous articles. But let’s refresh this information.
KISSBOX MIDI2TR allows you to convert MTC and transmit the signal via RTP-MIDI over the network.
In this case, we can either already generate timecode from the show server via RTP-MIDI to the network and receive it to the KISSBOX controller, or even use two KISSBOX devices to transmit or receive MIDI. Depending on whether we use an Ethernet cable, fiber optic or Wi-Fi, we can transmit our MIDI signal to a distance of many kilometres.
Using the RTP-MIDI protocol, we can broadcast synchronization protocols to several clients. This advantage also applies to KISSBOX equipment. Having one source, we can deliver an MIDI signal to several clients at once.
But KissBox is not only one solution, that you can use in your project. Custom microcontrollers became more popular in entertainment industry. And Arduino is the most successful direction that allow developers to create their own gadgets. Thanks to the programmers, there are a lot of open source libraries, that allow you to use sync protocols in your development. And of course RTP-MIDI has a library to work with Arduino microcontrollers. You can download it by link and parse MIDI data in your code. It is the most optimised library that I also used in my sync projects.
Ok, we have a microcontroller and RTP-MIDI library? What we can do with that? Actually anything that you can imagine! You can create your own KissBox controller to convert RTP-MIDI to Serial MIDI or to LTC. You can even convert RTP-MIDI to other Network based protocols: OSC, ArtNetTimecode, TCnet etc.
Many of lighting programers know that Grand MA2 doesn’t support any network sync protocols. But, not many people know that Grand MA2 system support “MSC over Ethernet”. It’s a specific MA2 protocol, but in manual we can find how to parse and create this type of message. For one of my sync project I was able to create controller, that convert RTP-MIDI to MSC over Ethernet for MA2 System. On the video, you can see fader sound EQ test over network. It’s pretty cool! Isn’t it?
If to summarize all the features of the RTP-MIDI protocol, then we can say.
First, this protocol is absolutely compatible with all MIDI protocols that were designed for transmission through the classic serial MIDI data transfer interface.
Second, to work with RTP-MIDI, there is no need to use MIDI cards to transmit MIDI messages, since the protocol was developed to work through a local network, you just need to have any device that has a network card to connect to the network.
The third feature follows from the second one, due to the fact that this interface works through a local network, it will inherit all the advantages of network technologies for transmitting Ethernet, Wi-Fi and fiber optics, and this is the transmission range and signal speed, which is one of the drawbacks of the classical MIDI interface.
And fourth, the ideology of connecting and splitting a MIDI signal between clients is already implemented in the RTP-MIDI session, which also allows you to get away from using specialized MIDI splitters and mergers.
With obvious advantages over the old MIDI interface, RTP-MIDI is widely used in the show industry.
Now the choice is yours to use the original MIDI or its enhanced version of RTP-MIDI.