McLaren Labs
rtpmidi User Guide

RTPMIDI Installation and User Guide

Download the .deb debian installation file on your computer. If you are using Ubuntu desktop, can double-click on the .deb file and it will install the program in /opt/rtpmidi.... Double-clicking the .deb file launches the package manager which installs the program and its dependencies.

With a newer version of apt, the following may also work.

$ sudo apt install ./rtpmidi_0.5.5_amd64.deb
        

This should unpack the executable and its resources. Check that the executable is found.

$ ls /opt/rtpmidi_0.5.5/bin
-rwxr-xr-x 1 root root 1987960 Jan 18 09:32 rtpmidi
        

You can verify the signature of the package with the dpkg-sig command. First, download our signing key and import it into your GPG keyring. Then, verify the signature of the .deb package.

$ curl -OL# https://mclarenlabs.com/static/keys/rootmclaren_public_key.asc
$ gpg --import rootmclaren_public_key.asc
$ dpkg-sig --verify rtpmidi_0.5.5_amd64.deb 
        

Launching rtpmidi from the Application launcher is easy: just double-click the icon in the Application Launcher. The screenshot below shows the Ubuntu18 desktop. When launched this way the application logs to syslog.

You can also launch the program using the absolute path name of the executable. (Note: do not move the executable from this location as it looks for resources in the /opt/rtpmidi... directory.) When launched this way the application logs to stderr.

$ /opt/rtpmidi_0.5.5/bin/rtpmidi &
        

Connect to another computer

The Left Panel labeled "Directory" shows the list of computers on your network advertising apple-midi services. A computer announces its availability on the network using Zero-Conf networking (also known as "Bonjour" and "Avahi"). A green circle indicates a remote MIDI connection that is available.

To launch a connection, first click on the computer name you want to connect to. Then click on the [Connect] Button on the bottom-left to set up a networking session between your computer and the selected remote.


Once selected, the remote host name will appear in the Right Panel under the list of "Participants." As the networking session negotiation proceeds, the circle next to the computer name will change. A green circle indicates a Participant that is fully connected.

Direct Connect by Hostname or IP-Address

It is also possible to directly connect to a remote computer by its Hostname or IP-Address. This can come in handy when connecting to a device that supports RTP-MIDI but does not advertise its services using Bonjour. One such example is an Arduino running Arduino-AppleMIDI-Library.

To use this feature, enter the Hostname (or IP-Address) and Port separated by a colon (":") in the [Call] entry, and then press the <Return> key. In the example below, the host's IP-Address is 10.0.0.44 and the RTP-MIDI port it is listening on is 5006.

Disconnect a participant

To disconnect a participant, first select the participant from the Right Panel, then click the [Disconnect] button.

Set your bonjour name

The "Bonjour Name" is the name advertised on your network to nearby computers. If you do not give a "Bonjour Name", your computer will not be announced to other computers. To fill in this value, enter the name of your computer in the Bonjour Name field and press your <Return> key.

Monitor Latency

The Latency Panel indicates (in milliseconds) of each arriving note. Lower and more uniform latency is to be preferred, and you will usually get better results using Ethernet instead of Wi-Fi.

Select a MIDI Input

You can select a MIDI source connected to your computer (such as a USB MIDI Keyboard) directly from rtpmidi. The MIDI information from that keyboard will be sent to every participant. The pop-up menu will display a list of known MIDI sources. Choose your keyboard from the list. The example below shows how to select an Akai MPK-Mini2 keyboard as a MIDI From source.

Select a MIDI Output

You can select a MIDI desination for MIDI information received from the participants. The pop-up menu will display a list of known MIDI destinations. The example below show how to select the Pi-Organ-Synth Linux Synthesizer as a destination for MIDI notes received over the network

Adjust Latency of Received Notes

This is new starting in Version 2.0. Latency of received notes can be adjusted by setting a value in this field in milliseconds. Read this article about latency adjustment for more information about how this can help preserve rhythm.

See your Network Addresses

New in Version 0.6.0 for the addition of IPV6. Right click on the app screen and select "Network Addresses."

A window will pop-up showing you the list of the currently assigned network addresses of your computer. This can come in handy when you want to direct connect. Copy/Paste the network address to where you need it.

Use without GUI

Run in command-line mode without the GUI. Read more in this blog article: https://mclarenlabs.com/blog/2018/09/05/using-rtpmidi-from-the-command-line/

Release History

Release Date Note
2.1.0 Oct 2024 Version 2.1 changes the handling of one particular event type: "noteOn,vel=0". This event previously was translated into "noteOff,vel=0", but now it is not. This brings it in line with other implementations. To get the prior behavior, use the "legacy_F" flag.
2.0.0 Sept 2024 Version 2.0 brings enhanced timing for notes in the same packet and adds a "latency adjustment" feature. Read about it here: rtpmidi version 2.0 Latency Adjustment. Numerous improvements in memory use as well. MMKServer 0.2.0 include these optimizations.
1.1.2 June 2022 Patch for receiver feedback first addressed in 1.0.1.
Release for Ubuntu 22.04 on AMD64, Ubuntu 20.04, Raspios-2021-10-30, Raspios-2022-01-28-bullseye-64bit.
1.1.0 April 2022 Support for Wayland display protocol (as well as Xorg).
Release for Ubuntu 22.04 on AMD64.
1.0.1 Feb 2022 Patch for rare error when receiver feedback is received.
Releases for Ubuntu 20.04, Ubuntu 20.10, Raspbian 2021-10-30, Debian 10.10.
1.0.0 Dec 2021 Feature Complete.
Automatically terminates sessions when a peer does not respond during
session initialization or if an active peer stops responding.
This behavior can be disabled with legacy_C.
Also fixes a bug when calling a hostname that does not resolve.
Releases for Ubuntu 20.04, Ubuntu 20.10, Raspbian 2021-10-30, Debian 10.10.
0.7.0 for Raspios 2021-10-30 Dec 2021 Built for Raspios 2021-10-30 Buster armhf
0.7.0 for Raspios 2021-05-07 Sep 2021 Built for Raspios 2021-05-07 Buster armhf
0.7.0 Aug 2021 More resilient to mal-formed packets.
Fixed bug when connecting to remote computer running multiple sessions.
Log option to view incoming packet addresses.
Releases for Ubuntu 20.04, Ubuntu 20.10, Raspbian 2020, Debian 10.10.
0.6.1 Nov 2020 The use of memlock defaults to OFF to account for reduced memlock limit in Ubuntu 20.10.
0.6.0 July 2020 IPv6 implementation. Network addresses popup. "-4" command line option to suppress use of IPv6.
0.5.5 May 2020 "Favorite" option. ALSA client:port parsing. Man page update.
0.5.2 Mar 2020 Avahi Interface flag. Advertises on INET4. Memlock.
0.5.0 Oct 2019 Full set of MIDI events, Direct Call.
0.3.3 Mar 2019 Permits double note-on, implements legacy modes.
0.3.2 Feb 2019 First release for Ubuntu18
0.3.1 Jan 2019 Bypasses GTK initialization when headless.
0.2.7 May 2018 Fixes bug in parsing long midi-list.
0.2.5 April 2018 Icons and desktop integration. First release for RPi.
0.1.0 Jan 2018 Initial release.