The Melbourne Exchange

Make Roto-Control do anything

Both APIs are published in full, and the two reference integrations are open source under an MIT licence. None of it is reverse-engineered or undocumented.

The three layers, briefly

The serial API is the configuration layer. Write whole setups, read them back. This is how you generate mappings programmatically.

The SysEx API is live and bidirectional. Put your own text on the eight screens, push meter levels, and receive knob touches and page changes back.

Plain MIDI is no protocol at all. Every knob sends 14-bit CC on channel 16, with its own touch message. Anything that speaks MIDI can use it.

Beyond the DAW

The motorised knobs make this an output device as much as an input one. Software can move somebody's hands to a state rather than telling them about it. Recall a snapshot and watch the panel travel to it.

None of that is specific to music software. A lighting desk recalling a state, a colour grade, a rig with no computer in it at all: because the plain MIDI layer needs no protocol, none of those need the API either.

The Ableton Live and Bitwig integrations are open source and worth reading first, whatever you are building.

Starting from scratch

Paste the block below into Claude, Cursor or Copilot, fill in the last line, and start there. It points the assistant at both specs and at the two implementations, so it reads them before it writes anything.

Starter prompt
I want to write software that talks to a Melbourne Instruments Roto-Control, a motorised MIDI controller with 8 touch-sensitive knobs, 8 buttons and a screen above each knob, arranged in 4 switchable pages.

There are three ways to talk to it, and I want you to read the specs before writing code:

1. Serial API (USB serial, 115200 8N1) - the configuration layer. Reads and writes all
   64 MIDI setups of 32 knobs and 32 buttons: message type, channel, CC or NRPN number,
   min and max, a 12-character name, a colour from a fixed 83-entry palette, and the
   haptics (smooth 300-degree sweep, a centre indent, arbitrary indents, or 2-16 detents
   with a label per detent).
2. SysEx API (USB MIDI, messages begin F0 00 22 03 02) - the live layer, bidirectional.
   Push track names, RGB track colours, plugin parameter names, VU meter levels, and
   arbitrary text to any of the 8 screens. The device pushes back knob selection, page
   changes, mode changes and learn events.
3. Plain MIDI, no protocol needed - every knob sends 14-bit CC on channel 16, every
   button sends 7-bit, and knob TOUCH is its own CC per knob. So it works as a
   high-resolution touch-sensing surface for anything at all.

Both specs and two MIT-licensed reference implementations, an Ableton Live remote script
and a Bitwig extension, are at:
https://github.com/Melbourne-Instruments/roto_control

The unusual capability: the knobs are motorised, so they are an OUTPUT device as well as
an input. Software can move the user's hands to a state rather than telling them about it.

What I want to build: [DESCRIBE IT HERE]

Read the relevant spec first and tell me which of the three layers this needs before you
write anything.

Share what you build →