Syncing studios remotely with RTPMIDI and Jamulus

5 minute read

Although it’s been majorly shite for a year, there have been some silver linings to come out of 2020. One of these has been a return to DJing with friends via Twitch and subsequently our new home hearthis.at/covidcore.

It’s been great catching up with friends and now a couple of us have stepped it up another gear by working out how to remotely sync our studios over the internet so we can jam together and just generally have fun with our kit.

It’s not that hard, the results are pretty good considering there’s going to be changing latency over time between each person. Here’s how it works…

There are two bits of tech involved:

  1. RTPMIDI

    This is a protocol that allows you to create MIDI sessions that others can join remotely. Then you share the same MIDI network and can send MIDI messages to each other. It’s actually been around for a while on MacOS, where it’s build in, but is also now available for other operating systems too.

  2. Jamulus

    This free software allows all participants in a session to send their own audio to a central server (you can host your own easily) where it is merged and sent back to everyone. The idea being that you only listen to the merged audio you receive back, thus everyone can hear each other. It actually works well too.

In our sessions we both had Ableton Live open and one person was the ‘master’, in control of starting and stopping the session. When one person started Live it would trigger Live on the remote side. We both also have hardware and other MIDI instruments plugged in too which also get triggered.

In Live you can use the ‘MIDI Clock Sync Delay’ which allows us to control the latency between us by adjusting the delay. It’s not perfect and things change but you can get it pretty tight and it can stay fairly tight for a while, we’re talking 30 minutes, maybe longer. YMMV depending on your internet connection, how far away from each other you are and many more factors. We are doing it from Berlin, Germany to Manchester, UK with decent results.

How to do it

Important - you need ethernet connections to get this working well so don’t expect much if you use WIFI. I forgot about this during one session and the audio was pretty bad so I can confirm it’s not worth trying.

Step 1

Download Jamulus and if you are not on a mac then get RTPMIDI too

Step 2

You need to enable port forwarding on your router to allow RTPMIDI to work. Use the default port 5004(UDP) and forward it to the machine where your music will be captured.

Step 3

If you are going to run your own Jamulus Server then you also need to open a port for that too. I ran it on a separate computer, doesn’t need a sound card or to be hardcore or anything. See the instructions, but essentially you just open the programme and that’s it!

Step 4 - RTPMIDI

Configure RTPMIDI session
Configure RTPMIDI session
  • Add all other participants in to your local directory (in the RTPMIDI interface), you’ll need to know their IP address and they’ll need to know yours - just look at whatismyipaddress.com in a browser and switch off VPNs first.
  • Restrict the session to ‘Only computers in my Directory’ to ensure that only your friends can connect via the RTPMIDI port through your router to your machine.
  • One person creates a session and the other person tries to join it.
  • Make sure you can see the other person in your participants list
  • On Mac at least, the session always seems to have the participant from the last session in there, so just clear it out and start fresh every time. Likely your IPs will have changed anyway so you’ll need to update the directory users anyway.

Step 5 - Drivers (Windows only)

Both Ableton and Jamulus need to access your sound card and this can be a problem for certain drivers. So our advice is to open up Ableton first using an ASIO driver and then Jamulus using directX or whatever else. On Macs this is not a problem, not sure about Linux as we are not using that this time.

Step 6 - Jamulus (client not server)

Configure Jamulus settings
Configure Jamulus settings
  • Start Jamulus
  • Open settings
  • Configure the input (where your audio goes IN to you soundcard)
  • Configure the output (where the merged audio comes OUT of your soundcard and to your speakers)
  • Connect to a server (you can connect to your own private server too)
  • Make sure you don’t use WIFI!
  • Make sure each of you can hear the other first
  • The mixer your see in your client adjusts the audio for you only, the other person has their own mixer
  • Ensure that you are only listening to the output from Jamulus server, not your direct output
  • We used high quality sound, stereo with auto jitter control

Step 7 - Ableton Live

  • Person who is ‘master’ switches on RTPMIDI output sync
Master sets output sync on
Master sets output sync on
  • Everyone else has only RTPMIDI input sync on
Others set input sync on
Others set input sync on
  • Non RTPMIDI midi prefs are unaffected and can be on if needed
  • Make sure when the master starts Live, that the remote Live is triggered
  • Play some 4x4 kicks on each end and adjust rtpmidi midi latency - works from both ends, but might be more sane if only one person is adjusting it

Step 8 - Jam it up!

Have fun. If you are running Jamulus Server then you can also enable auto-recording which is really cool. Jamulus will save each session with each participants audio in a separate WAV file for each of their connections. It will also create a ‘.lof’ file for Audacity, and a ‘.rpp’ for Reaper which means all the WAV files will be arranged in the respective audio programme just like the session took place. Check the image below to see what I mean - awesome stuff Jamulus - you rock! Please support these people as this tool is great :)

Session recordings organised by particpant connection - labelled with IP
Session recordings organised by particpant connection - labelled with IP

Go Check it out!

I didn’t cover everything that’s available here but this is all we used so far and it’s been awesome to make music with friends again. Hope this helps you out! :)

Leave a comment