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.
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.