novation Launch Control Xl Programmer User Guide
- June 9, 2024
- Novation
Table of Contents
- novation Launch Control Xl Programmer
- Launch Control XL Programmer’s Reference Guide
- Launchpad MIDI Protocol
- Launch Control XL System Exclusive Protocol
- Introduction
- Launch Control XL MIDI Overview
- Computer-to-Device Messages
- Control double-buffering
- Turn on all LEDs
- Launch Control XL System Exclusive Protocol Set LEDs
- Change current template
- Device-to-Computer messages
- LED double-buffering and flashing
- Read User Manual Online (PDF format)
- Download This Manual (PDF format)
novation Launch Control Xl Programmer
Launch Control XL Programmer’s Reference Guide
Product Information
The Launch Control XL is a MIDI controller with LED lights that can be programmed via two different protocols: the traditional Launchpad MIDI protocol and the Launch Control XL System Exclusive protocol. The LED lights can be set to four different brightness levels and can be manipulated using the Copy and Clear bits for double-buffering.
Product Usage
To set the LED lights on the Launch Control XL, you can use either the Launchpad MIDI protocol or the Launch Control XL System Exclusive protocol.
Launchpad MIDI Protocol
If you are using the Launchpad MIDI protocol, you need to selecta template that contains a button whose note/CC and MIDI channel correspond to the incoming message. To set the LED lights, send amessage with a single byte structure that includes the brightness level of both the red and green LEDs, as well as the Copy and Clear flags.
Byte Structure:
- Bit 6: Must be 0
- Bits 5-4: Green LED brightness level (0-3)
- Bit 3: Clear flag (1 to clear other buffer’s copy of LED)
- Bit 2: Copy flag (1 to write LED data to both buffers)
- Bits 1-0: Red LED brightness level (0-3)
Each LED can be set to one of four brightness levels:
- Brightness 0: Off
- Brightness 1: Low brightness
- Brightness 2: Medium brightness
- Brightness 3: Full brightness
It is good practice to keep the Copy and Clear flags set when turning LEDs on or off if double-buffering features are not in use.
To calculate velocity values, use the following formula:
- Hex version: Velocity = (10h x Green) + Red + Flags
- Decimal version: Velocity = (16 x Green) + Red + Flags
- Flags = 12 (OCh in hex) for normal use; 8 to make the LED flash, if configured; 0 if using double-buffering.
Launch Control XL System Exclusive Protocol
If you are using the Launch Control XL System Exclusive protocol, the required button will be updated regardless of its note/CC value or MIDI channel. To set the LED lights, send a message with a single-byte structure that includes the brightness level of both the red and green LEDs, as well as the Copy and Clear flags.
Byte Structure:
- Bit 6: Must be 0
- Bits 5-4: Green LED brightness level (0-3)
- Bit 3: Clear flag (1 to clear other buffer’s copy of LED)
- Bit 2: Copy flag (1 to write LED data to both buffers)
- Bits 1-0: Red LED brightness level (0-3)
Each LED can be set to one of four brightness levels:
- Brightness 0: Off
- Brightness 1: Low brightness
- Brightness 2: Medium brightness
- Brightness 3: Full brightness
Control Double-Buffering
The Launch Control XL also features double-buffering for LEDlighting. To use double-buffering, send a Control double-buffering message with a value of 0 to turn it on or 1 to turn it off. When using double-buffering, the Copy and Clear flags can be used to manipulate the buffer being written to.
Introduction
- This manual describes Launch Control XL’s MIDI communication format. This is all the proprietary information you need to be able to write patches and applications that are customised for Launch Control XL.
- It is assumed that you already have a basic knowledge of MIDI, and some appropriate software for writing interactive MIDI applications (for example, Max for Live, Max/MSP, or Pure Data).
- Numbers in this manual are given in both hexadecimal and decimal. To avoid any ambiguity, hexadecimal numbers are always followed by a lower-case h.
Launch Control XL MIDI Overview
- Launch Control XL is a class-compliant USB device that boasts 24 pots, 8 faders and 24 programmable buttons. The 16 ‘channel’ buttons each contain a bi-coloured LED with a red element and a green element; the light from these elements can be mixed to form amber. The four directional buttons each contain a single red LED. The ‘Device’, ‘Mute’, ‘Solo’ and ‘Record Arm’ buttons each contain a single yellow LED. Launch Control XL has 16 templates: 8 user templates, which can be modified, and 8 factory templates, which cannot. User templates occupy slots 00h07h (0-7), whereas factory templates occupy slots 08-0Fh (8-15). Use the Launch Control XL Editor (available on the Novation website) to modify your 8 user templates.
- Launch Control XL has a single MIDI port named ‘Launch Control XL n’, where n is the device ID of your unit (not shown for device ID 1). The button LEDs for any template can be controlled via System Exclusive messages. Alternatively, button LEDs for the currently selected template can by controlled via MIDI note-on, note-off, and control change (CC) messages, as per the original Launchpad protocol.
- Launch Control XL uses a System Exclusive protocol to update the state of any button on any template, regardless of the currently selected template. In order to maintain compatibility with Launchpad and Launchpad S, Launch Control XL also adheres to the traditional Launchpad LED lighting protocol via note-on, note-off and CC messages. However, such messages will only be acted upon if the currently selected template contains a button/pot whose note/CC value and MIDI channel match those of the incoming message. Users are therefore advised to adopt the new System Exclusive protocol.
- In addition, Launch Control XL also supports the original Launchpad double-buffering, flashing and set-/reset-all LED messages, where the MIDI channel of the message defines the template for which the message is intended. These messages can therefore be sent at any time, regardless of which template is currently selected.
- The state of each LED is stored when the template is changed and will be recalled when the template is reselected. All LEDs can be updated in the background via SysEx.
Computer-to-Device Messages
LEDs on the Launch Control XL can be set via two different protocols: (1) the
traditional Launchpad MIDI protocol, which requires the currently selected
template to contain a button whose note/CC and MIDI channel correspond to the
incoming message; and (2) the Launch Control XL System Exclusive protocol,
which will update the required button regardless of its note/CC value or MIDI
channel.
In both protocols, a single byte is used to set the intensities of both the
red and green LEDs. This byte also includes the Copy and Clear flags. The byte
is structured as follows (those unfamiliar with binary notation can read on
for the formula):
Bit | Name | Meaning |
---|---|---|
6 | Must be 0 | |
5..4 | Green | Green LED brightness |
3 | Clear | If 1: clear the other buffer’s copy of this LED |
2 | Copy | If 1: write this LED data to both buffers |
Note: this behaviour overrides the Clear behaviour when both | ||
bits are set | ||
1..0 | Red | Red LED brightness |
The Copy and Clear bits allow manipulation of the Launch Control XL’s double- buffering feature. See the ‘Control double-buffering’ message and the Appendix for details about how this can be used.
Each LED can therefore be set to one of four values:
- Brightness Meaning
- 0 Off
- 1 Low brightness
- 2 Medium brightness
- 3 Full brightness
If the double-buffering features are not in use, it is good practice to keep the Copy and Clear bits set when turning LEDs on or off. This makes it possible to use the same routines in flashing mode without re-working them. A formula for calculating velocity values is:
Hex version | Velocity | = | (10h x Green) |
---|---|---|---|
+ | Red | ||
+ | Flags | ||
Decimal version | Velocity | = | (16 x Green) |
+ | Red | ||
+ | Flags | ||
where | Flags | = | 12 (OCh in hex) for normal use; |
8 | to make the LED flash, if configured; | ||
0 | if using double-buffering. |
The following tables of pre-calculated velocity values for normal use may also be helpful:
Hex | Decimal | Colour | Brightness |
---|---|---|---|
0Ch | 12 | Off | Off |
0Dh | 13 | Red | Low |
0Fh | 15 | Red | Full |
1Dh | 29 | Amber | Low |
3Fh | 63 | Amber | Full |
3Eh | 62 | Yellow | Full |
1Ch | 28 | Green | Low |
3Ch | 60 | Green | Full |
Values for flashing LEDs are
Hex | Decimal | Colour | Brightness |
---|---|---|---|
0Bh | 11 | Red | Full |
3Bh | 59 | Amber | Full |
3Ah | 58 | Yellow | Full |
38h | 56 | Green | Full |
Launchpad Protocol
Note On — Set button LEDs
- Hex version 9nh, Note, Velocity
- Dec version 144+n, Note, Velocity
A note-on message changes the state of all buttons in the currently selected template whose note/CC value matches that of the incoming Note value and whose zero-indexed MIDI channel matches the MIDI channel n of the incoming message. Velocity is used to set the LED colour.
Note Off — Turn off button LEDs
- Hex version 8nh, Note, Velocity
- Dec versio 128+n, Note, Velocity
This message is interpreted as a note-on message with the same Note value but
with a velocity of 0.
The Velocity byte is ignored in this message.
Reset Launch Control XL
- Hex version Bnh, 00h, 00h
- Dec version 176+n, 0, 0
All LEDs are turned off, and the buffer settings and duty cycle are reset to their default values. The MIDI channel n defines the template for which this message is intended (00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates).
Control double-buffering
- Hex version Bnh, 00h, 20-3Dh
- Dec version 176+n, 0, 32-61
This message is used to control the double-buffering state of the buttons. The MIDI channel n defines the template for which this message is intended (00h- 07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates). See the Appendix for more information on double buffering. The last byte is determined as follows:
Bit| Name| Meaning|
---|---|---|---
6| | Must be 0.
5| | Must be 1.
4| Copy| If 1: copy the LED states from the new ‘displayed’ buffer| to
the| | new ‘updating’ buffer.|
3| Flash| If 1: continually flip ‘displayed’ buffers to make selected|
| | LEDs flash.|
2| Update| Set buffer 0 or buffer 1 as the new ‘updating’ buffer.|
1| | Must be 0.|
0| Display| Set buffer 0 or buffer 1 as the new ‘displaying’ buffer.|
For those less familiar with binary, the formula for calculating the data byte is
- Bit Name Meaning
- 6 Must be 0.
- 5 Must be 1.
- 4 Copy If 1: copy the LED states from the new ‘displayed’ buffer to the new ‘updating’ buffer.
- 3 Flash If 1: continually flip ‘displayed’ buffers to make selected LEDs flash.
- 2 Update Set buffer 0 or buffer 1 as the new ‘updating’ buffer.
- 1 Must be 0.
- 0 Display Set buffer 0 or buffer 1 as the new ‘displaying’ buffer.
For those less familiar with binary, the formula for calculating the data byte is:
- Hex version Data = (4 x Update)
- + Display
- + 20h
- + Flags
- Decimal version Data = (4 x Update)
- + Display
- + 32
- + Flags
- where Flags = 16 (10h in Hex) for Copy;
- 8 for Flash;
- 0 otherwise
The default state is zero: no flashing; the update buffer is 0; the displayed buffer is also 0. In this mode, any LED data written to Launch Control XL is displayed instantly. Sending this message also resets the flash timer, so it can be used to resynchronise the flash rates of all Launch Control XLs connected to a system
Turn on all LEDs
- Hex version Bnh, 00h, 7D-7Fh
- Dec version 176+n, 0, 125-127
The last byte can take one of three values
Hex | Decimal | Meaning |
---|---|---|
7Dh | 125 | Low brightness test. |
7Eh | 126 | Medium brightness test. |
7Fh | 127 | Full brightness test. |
Sending this command resets all other data — see the Reset Launch Control XL message for more information. The MIDI channel n defines the template for which this message is intended (00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates).
Launch Control XL System Exclusive Protocol Set LEDs
System Exclusive messages can be used to set the LED values for any button or pot in any template, regardless of which template is currently selected. This is done using the following message
- Hex version F0h 00h 20h 29h 02h 11h 78h Template Index Value F7h
- Dec version 240 0 32 41 2 17 120 Template Index Value 247
Where Template is 00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15)
for the 8 factory templates; Index is the index of the button or pot (see
below); and Value is the velocity byte that defines the brightness values of
both the red and green LEDs.
Multiple LEDs can be addressed in a single message by including multiple LED-
Value byte pairs.
Indices are as follows:
- 00-07h (0-7) : Top row of knobs, left to right
- 08-0Fh (8-15) : Middle row of knobs, left to right
- 10-17h (16-23) : Bottom row of knobs, left to right
- 18-1Fh (24-31) : Top row of ‘channel’ buttons, left to right
- 20-27h (32-39) : Bottom row of ‘channel’ buttons, left to right
- 28-2Bh (40-43) : Buttons Device, Mute, Solo, Record Arm
- 2C-2Fh (44-47) : Buttons Up, Down, Left, Right
Toggle button states
The state of buttons whose behaviour is set to ‘Toggle’ (rather than
‘Momentary’) can be updated by System Exclusive messages. This is done using
the following message:
- Hex version F0h 00h 20h 29h 02h 11h 7Bh Template Index Value F7h
- Dec version 240 0 32 41 2 17 123 Template Index Value 247
Where Template is 00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15)
for the 8 factory templates; Index is the index of the button (see below); and
Value is either 00h (0) for off or 7Fh (127) for on. Messages for buttons not
set to ‘Toggle’ will be ignored.
Multiple buttons can be addressed in a single message by including multiple
Index-Value byte pairs.
Indices are as follows:
- 00-07h (0-7) : Top row of ‘channel’ buttons, left to right
- 08-0Fh (8-15) : Bottom row of ‘channel’ buttons, left to right
- 10-13h (16-19) : Buttons Device, Mute, Solo, Record Arm
- 14-17h (20-23) : Buttons Up, Down, Left, Right
Change current template
The following message can be used to change the current template of the device:
- Hex version F0h 00h 20h 29h 02h 11h 77h Template F7h
- Dec version 240 0 32 41 2 17 119 Template 247
Where Template is 00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates.
Device-to-Computer messages
Button pressed
- Hex version 9nh, Note, Velocity
- Dec version 144+n, Note, Velocity OR
- Hex version Bnh, CC, Velocity
- Dec version 176+n, CC, Velocity
Buttons can output either note messages or CC messages on a zero-indexed MIDI channel n. A message is sent with velocity 7Fh when a button is pressed; a second message is sent with velocity 0 when it is released. The editor can be used to change each button’s note/CC value and velocity value on press/release.
Template changed
Launch Control XL sends the following System Exclusive message out on changing
template:
- Hex version F0h 00h 20h 29h 02h 11h 77h Template F7h
- Dec version 240 0 32 41 2 17 119 Template 247
Where Template is 00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates.
LED lighting via Note Messages
Here you can see the note messages used to light the LEDs under the dials on the Launch Control XL.
LED double-buffering and flashing
The Launch Control XL has two LED buffers, 0 and 1. Either one can be displayed while either is updated by incoming LED instructions. In practice, this can enhance the performance of Launch Control XL in one of two ways:
- By enabling a large-scale LED update which, although it could take 100 milliseconds to setup, appears to the user to be instantaneous.
- By automatically flashing selected LEDs
To exploit double-buffering for the first purpose requires very little modification to existing applications. It can be introduced in the following way
-
Send Bnh, 00h, 31h (176+n, 0, 49) on start-up, where n defines the template for which this message is intended (00h-07h (0-7) for the 8 user templates, and 08h-0Fh (8-15) for the 8 factory templates). This sets buffer 1 as the displayed buffer, and buffer 0 as the updating buffer. Launch Control XL will cease to show new LED data that is written to it.
-
Write LEDs to the Launch Control XL as usual, ensuring that the Copy and Clear bits are not set.
-
When this update is finished, send Bnh, 00h, 34h (176+n, 0, 52). This sets buffer 0 as
the displayed buffer, and buffer 1 as the updating buffer. The new LED data will instantly become visible. The current contents of buffer 0 will automatically be copied to buffer 1. -
Write more LEDs to the Launch Control XL, with Copy and Clear bits set to zero.
-
When this update is finished, send Bnh, 00h, 31h (176+n, 0, 49) again. This switches back to the first state. The new LED data will become visible, and the contents of buffer 1 will be copied back to buffer 0.
-
Continue from step 2.
-
Finally, to turn this mode off, send Bnh, 00h, 30h (176+n, 0, 48).
Alternatively, chosen LEDs can be made to flash. To turn on automatic flashing, which lets Launch Control XL use its own flashing speed, send:
- Hex version Bnh, 00h, 28h
- Dec version 176+n, 0, 40
If an external timeline is required to make the LEDs flash at a determined rate, the following sequence is suggested:
- Turn flashing LEDs on Bnh, 00h, 20h (decimal version 176+n, 0, 32)
- Turn flashing LEDs off Bnh, 00h, 20h (decimal version 176+n, 0, 33)
As mentioned previously, it is good practice to keep the Clear and Copy bits set while addressing LEDs generally, so that an application can easily be expanded to include flashing. Otherwise, unintended effects will occur when trying to introduce it later.
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>