Novation Launch Control XL 3: MIDI CC, NRPN and OSC map¶
The Novation Launch Control XL 3 as named OSC addresses — 69 CC, 6 SysEx commands — ready to use from Claude (MCP), SuperCollider, Sonic Pi, TouchDesigner or any OSC app via osc-bridge.
| Device | Novation Launch Control XL 3 |
|---|---|
| Vendor | Novation |
| OSC prefix | /lcxl3 |
| Source | 📘 From the manufacturer's documentation |
| Revision | firmware 1.x (2024-2026) |
| Upstream | vendor-doc |
| Driver file | devices/novation/launch-control-xl-3.json |
Not tested on the device yet
This driver comes from documentation or community data and has not been checked on real hardware. If you own one, a quick test and a pull request promoting it helps everyone — see CONTRIBUTING.
How do you control it?¶
Find the MIDI ports, then start the bridge with this driver:
osc-bridge detect # prints the ready-to-run line for what is plugged in
osc-bridge run --device devices/novation/launch-control-xl-3.json --out-port <N> --in-port <M>
Then send OSC to 127.0.0.1:7777, for example:
From Claude or any MCP client, the osc-bridge mcp server exposes this driver as lcxl3: ask “what can the Novation Launch Control XL 3 do?” and it reads this map with list_routes. See the MCP guide.
MIDI CC and NRPN parameters (69)¶
| OSC address | CC | NRPN (MSB/LSB) | Range | Nature | Section |
|---|---|---|---|---|---|
/lcxl3/feature/surface_mode |
30 | 1–29 | continuous | ||
/lcxl3/feature/shift |
63 | 0–1 | switch | ||
/lcxl3/feature/row1/relative |
69 | 0–1 | switch | ||
/lcxl3/feature/row2/relative |
72 | 0–1 | switch | ||
/lcxl3/feature/row3/relative |
73 | 0–1 | switch | ||
/lcxl3/feature/fader_pickup |
70 | 0–1 | switch | ||
/lcxl3/feature/touch_events |
71 | 0–1 | switch | ||
/lcxl3/feature/led_brightness |
111 | 0–127 | continuous | ||
/lcxl3/feature/screen_brightness |
112 | 0–127 | continuous | ||
/lcxl3/feature/display_timeout |
113 | 0–99 | continuous | ||
/lcxl3/feature/out2_midi_thru |
120 | 0–1 | switch | ||
/lcxl3/feature/global_midi_channel |
100 | 0–15 | continuous | ||
/lcxl3/led/palette/fader/1 |
5 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/2 |
6 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/3 |
7 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/4 |
8 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/5 |
9 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/6 |
10 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/7 |
11 | 0–127 | continuous | ||
/lcxl3/led/palette/fader/8 |
12 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/1 |
13 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/2 |
14 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/3 |
15 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/4 |
16 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/5 |
17 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/6 |
18 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/7 |
19 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row1/8 |
20 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/1 |
21 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/2 |
22 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/3 |
23 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/4 |
24 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/5 |
25 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/6 |
26 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/7 |
27 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row2/8 |
28 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/1 |
29 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/2 |
30 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/3 |
31 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/4 |
32 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/5 |
33 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/6 |
34 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/7 |
35 | 0–127 | continuous | ||
/lcxl3/led/palette/encoder/row3/8 |
36 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/1 |
37 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/2 |
38 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/3 |
39 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/4 |
40 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/5 |
41 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/6 |
42 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/7 |
43 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm/8 |
44 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/1 |
45 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/2 |
46 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/3 |
47 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/4 |
48 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/5 |
49 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/6 |
50 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/7 |
51 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select/8 |
52 | 0–127 | continuous | ||
/lcxl3/led/palette/solo_arm_toggle |
65 | 0–127 | continuous | ||
/lcxl3/led/palette/mute_select_toggle |
66 | 0–127 | continuous | ||
/lcxl3/led/palette/settings |
104 | 0–127 | continuous | ||
/lcxl3/led/palette/track_prev |
103 | 0–127 | continuous | ||
/lcxl3/led/palette/track_next |
102 | 0–127 | continuous | ||
/lcxl3/led/palette/page_up |
106 | 0–127 | continuous | ||
/lcxl3/led/palette/page_down |
107 | 0–127 | continuous | ||
/lcxl3/led/palette/record |
118 | 0–127 | continuous | ||
/lcxl3/led/palette/play |
116 | 0–127 | continuous |
SysEx commands (6)¶
| OSC address | Arguments |
|---|---|
/lcxl3/daw_mode/enable |
|
/lcxl3/daw_mode/disable |
|
/lcxl3/led/rgb |
control: u7, r: u7, g: u7, b: u7 |
/lcxl3/display/configure |
target: u7, config: u7 |
/lcxl3/display/text |
target: u7, field: u7, text: string |
/lcxl3/display/bitmap |
target: u7, data: string |