open-audiovisual
Search GitHub

Novation

Novation Launch Control XL (MK2)

Novation Launch Control XL (MK2) is a MIDI hardware controller by Novation: 24 knobs, 8 faders and 24 buttons.

It sends CC and Note on channel 9. The profile cites 5 sources. No control is flagged unverified.

  • Manufacturer docs
  • Community notes
  • LED feedback
Kind
hardware device
Maker
Novation
Controls
56 controls
Messages
CC · Note
MIDI channels
9
LED feedback
yes, lights are driven by MIDI
Signals
midi/lcxl/…
Port name matches
/launch\s*control\s*xl/i
LAUNCH CONTROL XLUserFactorySEND AA1A2A3A4A5A6A7A8SEND BB1B2B3B4B5B6B7B8PAN / DEVICEP1P2P3P4P5P6P7P8SEND SELECT▲▼TRACK SELECT◀▶12345678TRACK FOCUS12345678TRACK CONTROL12345678

Play Novation Launch Control XL (MK2) on screen Full screen ↗ Raw JSON ↗ All controllers

Drag knobs and faders · tap pads and keys · or plug the real one in and press Connect. Nothing is sent anywhere unless you add a MIDI out.

MIDI implementation

Every control of Novation Launch Control XL (MK2) and the message it sends

Generated from the profile file, so it is the same table the on-screen controller plays. Channels are 1–16; numbers are real MIDI numbers.

MIDI implementation of Novation Launch Control XL (MK2)
ControlTypeMessageChNumberSignalLED feedbackVerified
A1 a1 knob CC 9 13 midi/lcxl/a1 — yes
A2 a2 knob CC 9 14 midi/lcxl/a2 — yes
A3 a3 knob CC 9 15 midi/lcxl/a3 — yes
A4 a4 knob CC 9 16 midi/lcxl/a4 — yes
A5 a5 knob CC 9 17 midi/lcxl/a5 — yes
A6 a6 knob CC 9 18 midi/lcxl/a6 — yes
A7 a7 knob CC 9 19 midi/lcxl/a7 — yes
A8 a8 knob CC 9 20 midi/lcxl/a8 — yes
B1 b1 knob CC 9 29 midi/lcxl/b1 — yes
B2 b2 knob CC 9 30 midi/lcxl/b2 — yes
B3 b3 knob CC 9 31 midi/lcxl/b3 — yes
B4 b4 knob CC 9 32 midi/lcxl/b4 — yes
B5 b5 knob CC 9 33 midi/lcxl/b5 — yes
B6 b6 knob CC 9 34 midi/lcxl/b6 — yes
B7 b7 knob CC 9 35 midi/lcxl/b7 — yes
B8 b8 knob CC 9 36 midi/lcxl/b8 — yes
P1 p1 knob CC 9 49 midi/lcxl/p1 — yes
P2 p2 knob CC 9 50 midi/lcxl/p2 — yes
P3 p3 knob CC 9 51 midi/lcxl/p3 — yes
P4 p4 knob CC 9 52 midi/lcxl/p4 — yes
P5 p5 knob CC 9 53 midi/lcxl/p5 — yes
P6 p6 knob CC 9 54 midi/lcxl/p6 — yes
P7 p7 knob CC 9 55 midi/lcxl/p7 — yes
P8 p8 knob CC 9 56 midi/lcxl/p8 — yes
1 f1 fader CC 9 77 midi/lcxl/f1 — yes
2 f2 fader CC 9 78 midi/lcxl/f2 — yes
3 f3 fader CC 9 79 midi/lcxl/f3 — yes
4 f4 fader CC 9 80 midi/lcxl/f4 — yes
5 f5 fader CC 9 81 midi/lcxl/f5 — yes
6 f6 fader CC 9 82 midi/lcxl/f6 — yes
7 f7 fader CC 9 83 midi/lcxl/f7 — yes
8 f8 fader CC 9 84 midi/lcxl/f8 — yes
1 focus1 button Note · momentary 9 41 · F2 midi/lcxl/focus1 note 41 · on 62 / off 29 yes
2 focus2 button Note · momentary 9 42 · F#2 midi/lcxl/focus2 note 42 · on 62 / off 29 yes
3 focus3 button Note · momentary 9 43 · G2 midi/lcxl/focus3 note 43 · on 62 / off 29 yes
4 focus4 button Note · momentary 9 44 · G#2 midi/lcxl/focus4 note 44 · on 62 / off 29 yes
5 focus5 button Note · momentary 9 57 · A3 midi/lcxl/focus5 note 57 · on 62 / off 29 yes
6 focus6 button Note · momentary 9 58 · A#3 midi/lcxl/focus6 note 58 · on 62 / off 29 yes
7 focus7 button Note · momentary 9 59 · B3 midi/lcxl/focus7 note 59 · on 62 / off 29 yes
8 focus8 button Note · momentary 9 60 · C4 midi/lcxl/focus8 note 60 · on 62 / off 29 yes
1 ctrl1 button Note · momentary 9 73 · C#5 midi/lcxl/ctrl1 note 73 · on 60 / off 28 yes
2 ctrl2 button Note · momentary 9 74 · D5 midi/lcxl/ctrl2 note 74 · on 60 / off 28 yes
3 ctrl3 button Note · momentary 9 75 · D#5 midi/lcxl/ctrl3 note 75 · on 60 / off 28 yes
4 ctrl4 button Note · momentary 9 76 · E5 midi/lcxl/ctrl4 note 76 · on 60 / off 28 yes
5 ctrl5 button Note · momentary 9 89 · F6 midi/lcxl/ctrl5 note 89 · on 60 / off 28 yes
6 ctrl6 button Note · momentary 9 90 · F#6 midi/lcxl/ctrl6 note 90 · on 60 / off 28 yes
7 ctrl7 button Note · momentary 9 91 · G6 midi/lcxl/ctrl7 note 91 · on 60 / off 28 yes
8 ctrl8 button Note · momentary 9 92 · G#6 midi/lcxl/ctrl8 note 92 · on 60 / off 28 yes
Device device button Note · momentary 9 105 · A7 midi/lcxl/device note 105 · on 127 / off 0 yes
Mute mute button Note · momentary 9 106 · A#7 midi/lcxl/mute note 106 · on 127 / off 0 yes
Solo solo button Note · momentary 9 107 · B7 midi/lcxl/solo note 107 · on 127 / off 0 yes
Rec Arm arm button Note · momentary 9 108 · C8 midi/lcxl/arm note 108 · on 127 / off 0 yes
▲ up button CC · momentary 9 104 midi/lcxl/up CC 104 · on 127 / off 0 yes
▼ down button CC · momentary 9 105 midi/lcxl/down CC 105 · on 127 / off 0 yes
◀ left button CC · momentary 9 106 midi/lcxl/left CC 106 · on 127 / off 0 yes
▶ right button CC · momentary 9 107 midi/lcxl/right CC 107 · on 127 / off 0 yes

LED feedback is modeled for 24 of its controls: the LED column says which message lights each one.

Sources

  • manufacturer Launch Control XL Programmer's Reference Guide v2 (Novation)8 user templates (slots 0–7) + 8 fixed factory templates (8–15); the MIDI channel of a message = its template, so factory template 1 is channel 9; one port named 'Launch Control XL n' (n = device ID, omitted for ID 1); buttons send 127 on press, 0 on release; LED = note-on (or CC for CC buttons) on the template's channel, velocity = 16 × green + red + 12 flags (12 off, 13/15 red low/full, 28/60 green low/full, 29/63 amber low/full, 62 yellow); knob LEDs addressed by notes 13–15, 29–31 … 125–127 (diagram p. 8)
  • manufacturer Launch Control XL Getting Started Guide v2 (Novation)hold User or Factory and press one of the bottom pads 1–8 to select a template; factory templates output a fixed set of CCs and notes; 24 pots, 8 faders, 16 buttons + 4 mode + 4 arrow buttons; same footprint as Launchpad S
  • community Ableton Live 12 MIDI Remote Script Launch_Control_XL (decompiled; non-official)selects factory template 1 (LIVE_CHANNEL = 8, i.e. MIDI channel 9) by SysEx; send A knobs CC 13–20, send B 29–36, pan/device 49–56, faders 77–84; track focus notes 41–44, 57–60; track control notes 73–76, 89–92; device/mute/solo/arm notes 105–108; up/down/left/right CC 104–107; knob LED notes 13, 29, 45 … 125 (row 1), 14 … 126, 15 … 127
  • community DrivenByMoss LaunchControlXLControlSurface.java (Bitwig; non-official)same numbers; every factory template uses them, on its own channel 9–16; single-LED buttons 127 = on
  • community Ardour Novation_LaunchControl_XL.map (non-official)channel 9: knobs CC 13–20 / 29–36 / 49–56, faders 77–84, focus notes 41–44 57–60, control notes 73–76 89–92, left/right CC 106/107

Notes

Factory template 1 (MIDI channel 9) — the template Ableton Live selects; select it by holding Factory and pressing bottom-row button 1. The other factory templates send the same numbers on channels 10–16 (copy the profile and change "channel"). User templates are editable in Novation Components and are not modelled. The User / Factory buttons switch templates inside the unit (SysEx F0 00 20 29 02 11 77 <template> F7) and send no control message. LED feedback: track focus amber-low idle / yellow when held, track control green-low / green, mode and arrow buttons 127 = on — the unit acts on it only while factory template 1 is selected. The LEDs under the knobs (notes 13–15, 29–31 … 125–127 on channel 9) are not driven. MK1 and MK2 share this protocol (Novation publishes one reference for both).

Port names it recognises

matches
/launch\s*control\s*xl/i

Signals

Every control publishes midi/lcxl/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/lcxl/last.

Use it

Use Novation Launch Control XL (MK2) in your own work

  1. Embed it with one line

    No import map, no build step. Change layout, add hardware="ask" for a Connect button.

    html
    <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script>
    <oav-controller profile="novation-launch-control-xl-mk2" readout></oav-controller>
  2. Or as an iframe

    For places that only take an iframe. Every event arrives as a postMessage.

    html
    <iframe src="https://openaudiovisual.com/embed/controller/?profile=novation-launch-control-xl-mk2&readout"
            width="720" height="742" style="border:0;max-width:100%" allow="midi"
            title="Novation Launch Control XL (MK2)"></iframe>
    <script>
      // every control the visitor plays arrives here
      addEventListener('message', (e) => {
        if (e.data?.source !== 'openav' || e.data.type !== 'control') return;
        console.log(e.data.detail.signal, e.data.detail.value);
      });
    </script>
  3. Send it to Ableton, TouchDesigner or Resolume

    What you play on screen leaves as real MIDI on the IAC bus (macOS) or a loopMIDI port (Windows). The steps are on the catalog page.

    html
    <!-- what you play on this controller → the IAC bus (macOS) → Ableton, TouchDesigner, Resolume -->
    <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script>
    <oav-controller profile="novation-launch-control-xl-mk2" midi-out="IAC" readout></oav-controller>
    <!-- Windows: midi-out="loopMIDI" · let the visitor pick a port: midi-out="ask" -->

    macOS: Audio MIDI Setup → MIDI Studio → IAC Driver → “Device is online”. Windows 11: the built-in Windows MIDI Services have a loopback (not tested by us); older Windows: install loopMIDI, add a port and use midi-out="loopMIDI".

In p5.js, with one line

The one-line injection names knobs, faders and pads by their order in this profile, the order of the table above. Add ?profile=novation-launch-control-xl-mk2 to make the on-screen controller this one; a real Novation Launch Control XL (MK2) is recognised by its port name.

javascript
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=novation-launch-control-xl-mk2' }));
In your sketchControlMessage
knob1A1 a1CC 13 · Ch 9
knob2A2 a2CC 14 · Ch 9
knob3A3 a3CC 15 · Ch 9
knob4A4 a4CC 16 · Ch 9
knob5A5 a5CC 17 · Ch 9
knob6A6 a6CC 18 · Ch 9
knob7A7 a7CC 19 · Ch 9
knob8A8 a8CC 20 · Ch 9
knob(9)B1 b1CC 29 · Ch 9
knob(10)B2 b2CC 30 · Ch 9
knob(11)B3 b3CC 31 · Ch 9
knob(12)B4 b4CC 32 · Ch 9
knob(13)B5 b5CC 33 · Ch 9
knob(14)B6 b6CC 34 · Ch 9
knob(15)B7 b7CC 35 · Ch 9
knob(16)B8 b8CC 36 · Ch 9
… and 8 more, up to knob(24), in the same order
fader11 f1CC 77 · Ch 9
fader22 f2CC 78 · Ch 9
fader33 f3CC 79 · Ch 9
fader44 f4CC 80 · Ch 9
fader55 f5CC 81 · Ch 9
fader66 f6CC 82 · Ch 9
fader77 f7CC 83 · Ch 9
fader88 f8CC 84 · Ch 9
p5.js sketch
function draw() {
  background(knob1 * 255);   // A1 · CC 13
  circle(width / 2, height / 2, 50 + knob2 * 300);   // A2 · CC 14
}

Encoders, buttons, wheels and strips are not numbered: read them as midi.cc[number] in the table above, or react in controlChange(cc, value, ch).

The whole p5.js page →

Missing

Is your controller not here?

Open an issue with the brand and model, whether you have the unit and a link to the manual. Or write the profile yourself: it is one JSON file.

GitHub

Is something in this data wrong?

Every number on this page comes from one JSON file. If it disagrees with your unit or the manual, tell us which firmware you checked and we fix the file.