How to simply switch on/off an LED in Launchpad MK2

I've spent ages trying to work this out and I've failed.

I'm using a launchpad 2 to control keyswitches and everything works fine, but I can't work out how to get the pad to remain on when selected.

If I do this, then the BOME remapped pads don't work.


I'd just like to be able to know which pad(s) are selected at any given time, and to be able to cancel the lights which a press of one particular button (could be the escape key I suppose).


I've tried experimenting with the demo of flashing lights, but that seems to put the launchpad in a mode that isn't compatible with note outputs.

The launchpad program manual doesn't seem to help here - perhaps there is a special mode it has to be set too to do this.


Any help appreciated - I don't really want to have to buy a different launchpad if I can help it, although I know the very latest can be programmed without having to go through BOME.


Please find the attached.

The Launchpad buttons are all momentary. We have to convert the LED behavior using Bome MIDI Translator Pro to toggle to track the on/off state of the LEDs.

In this case I use two global variables (which are 32 bits each) "ga" and "gb" to track the on/of state of the 64 square pads. If you want to also track the round ones, you will need another global variable.

I use the power up mode of the Launchpad MKII to determine note numbers.

The rules work as follows:

  1. I calculate the global variable and bit position based on the incoming note number by first converting to rows and columns. Then from there I determine the bit position. (The Launchpad note numbers are not completely sequential but bit positions should be).
  2. I toggle the bit of the button pushed and then re-save the global variable
  3. I send back either note-on or note-off values back to the Launchpad depending on the current bit state
  4. The preset defined input and output is My LaunchPad which are aliases that I define as my controller. Application is an alias I also defined. When opening the project the first time, you will be prompted to assign these aliases to their real ports. After that you can use the menu MIDI->Edit Project Port Aliases to re-assign them if needed.


I also set up a thru path from My Launchpad to Application to allow the buttons to pass thru to the application untouched (momentary). I am assuming you do not want to modify the behavior of what you are sending to the application. I also turned off "swallow" in the translator to allow the note-on messages to pass through this path untouched.


The rules are heavily commented. This is a pretty advanced technique and you could always use 64 translators and 64 global variable instead, but I prefer to conserve global variables and also use fewer translators whenever possible.


I hope this gets you on the right path!

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:


1 Like

Thank you !
I’m experimenting now and I’ll let you know how I get on!

I’m trying to apply your nicely dense bit of code to my LaunchPad Mini.

In the Rules, what are those first comments about the rows?

The row/column math isn’t working. Top left button is note 0. It comes out of the rules identified as row -1 and column -1. The one below that is note 16, gets r0/c0. Below that is note 32, r2/c1.

The project file I posted I believe is for Launchpad MK2 (full size). The assignment of buttons on the Launchpad MINI I believe are different so the math will also be different. I think I posted something about Launchpad S in the last month which has the same assignments as the Launchpad MINI. If you have a Launchpad MINI MK3 they will be different still. Novation doesn’t seem to want to keep the assignments of all of their devices the same or even similar.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Launchpad MK2 (full size). The assignment of buttons on the Launchpad MINI I believe are different>

Ah, yup, I see that now. Wow, the MK2 assignments were bonkers. Really straightforward on the Mini.
If I’m looking at the right S post, it only does 3 specified buttons. Now that I know what’s going on, though, I’ll see if I can figure out an array for the Mini.

OK, the calculations for the array rows and columns is probably the hardest part to work out. Once you are there though, the bitmapping is pretty straight forward.

Reach out to me if you want me to do that for you as a paid service.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

I have it working. I’m seeing negative numbers in the array variable, though, so I’d guess I’m shifting wrong somewhere. I’ll start a new topic for ease of searching.

Negative numbers are OK in the array variables. Bit 31 represents a negative number so all bits on in a 32 bit variable would represent a -1 decimal.

This post in Tips and Tricks should explain how 32 bit signed integers work.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:
1 Like