Solo Button Light On Toggle With Others Off

Hello again :slight_smile:

I had the wonderful experience of locking myself out of my own computer thanks to a windows update, so reinstalled everything and my back ups weren’t up to date. Lost a lot of things.

Including lots of my MTP formulas.
Trying to remember how I did it. I have the mute button toggles working fine.
Solo is trickier. For the lighting, I remember that I had to make 64 translators for just 8 buttons, but there has to be a better way using rules.

The tricky part is I want the button I press to toggle on or off, but pressing another solo button will turn off any solo buttons in the row and only turn that one on. But they each have to toggle on/off still.

So for the mute buttons:
go=go^1
if go>0 then pp=127
if go==0 then pp=0

They work fine. I’m thinking the solo buttons will have that and another formula as well.
Each of the 8 mute buttons have their own dedicated global variable. (go is the example)
But now how to make the 8 solo buttons do the same, but cancel each other like a cut group?
I’m thinking each would share a global variable but have a dedicated value, but then I’m struggling with the toggle on/off too.
Maybe using an ‘if is not’ modifier (exclamation + equals !=) to determine all the lights that will be off. ?

:frowning: help plz

Hi, let me make sure I understand.

Initial state is all solo buttons in the row off
You press a solo button and the button pushed toggles.
You press another solo button (same row) and it turns on but all other buttons in that row turn off (the original one that is on).
So essentially you want behavior like a radio button where only one button on a given row will ever be lit and will toggle on and off.

Is this correct? What controller are you using and what note numbers do each of the solo buttons have. Is there anything that comes back from the application that effects the LED behavior?

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

Hi,
The below will handle the bottom row LED’s as you indicated on the Akai APC-MINI

The note numbers for the bottom row are 0x40-0x47
We use a bitmap on global variable ga to handle the LED states.
The incoming note is local variable pp

Here are the rules:

// only notes in scope
if pp<0x40 then exit rules, skip outgoing action
if pp>0x47 then exit rules, skip outgoing action
// convert to 0-7 this will bet the bit position 
// of the global variable
tt=pp-0x40
// determine current bit state put in rr
rr=ga>>tt
rr=rr&1
// clear all bits 
ga=0
// toggle bit state
rr=rr^1
// shift it into position
ga=rr<<tt
// set up for output
if rr==1 then rr=127

The output looks like this. (Raw MIDI)

// turn off entire row
90 40 00 90 41 00 90 42 00 90 43 00 90 44 00 90 45 00 90 46 00 90 47 00
// show state of button pushed
90 pp rr

I have attached the project file.

One-Solo-LED-2022-05-28.bmtp (1.5 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Yes exactly. I just googled “radio button” and that is it. Solo button lights are as radio buttons and the mute button lights behave like checkboxes. Already have mute buttons done.

It’s the Launch Control XL. Top row of buttons I have as mute buttons, bottom row solo buttons.
All the mouse click translators I have done already but it’s just this lights puzzle I’m trying to figure out.

It has to have all lights off when project start and/or device enabled. Think I can do that.
These solo and mute lights need to remember their state when switching between presets. Think I can do that.
It also needs to retain toggling on/off, pressing the same button, while still being radio buttons, in relationship with each other. My explanation is bad, but it’s just standard solo button behavior.

Just sending a basic 127 cc works to light them up, so don’t think I will need bitmap stuff in this case.
To have this same setup on my dj controller before, I remember that I had the 8 pads like this:
Input: Press button 1
Lights output:
1 on
2 off
3 off
4 off
5 off
6 off
7 off
8 off

So I have to duplicate those 8 translators for every button, ending up with 64 translators.
Plus all the translators for initializing project and preset. It’s over a hundred just for lighting 8 buttons.
So I can checkbox them fine (mute), and radio them fine (solo) using the 64 translator method, but I haven’t tried radio *and toggle at the same time, with the initialize variables too. The dj controller didn’t need toggle on/off, just radio. I can figure out two things at once, but as soon as there are three things to do, I’m lost. :frowning:

Hi,

For this type of behavior, it really is more elegant to use bitmapping. The attached example is for bitmap for LC XL with factory template 1 for solo buttons. I turn the green for on. By using bitmapping, although it might seem a bit strange, it is much easier to control the state of all 8 LED’s and how they behave together.

Upon project open I set the template to factory 1 and initialize the launch control. This ensures the right template is selected for the solo buttons.

Only 1 translator and 1 global variable is needed to manage all 8 solo buttons using bitmapping.

One-Solo-LED-2022-05-28a–LC-XL.bmtp (2.1 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Trevor,

Check out this version.

It has a mechanism to switch between Solo and Mute
Mute LED’s are toggle and yellow
Solo LED’s are radio/toggle and green

This is done with 3 global variables and 4 presets using a bitmap method. Switching between Solo and Mute presets updates the LED row for that selection and also turns on the appropriate selection LED (Solo or Mute)

I don’t send anything to the Application at this point as input and output are only set for LC XL device for LED feedback.

On project start or re-connect of the LCXL - Variables are re-initialzed to zero and we go into Mute Mode. Again I use LCXL factory template 1 for everything.

Solo-and-Mute-XL–2022-05-28.bmtp (4.8 KB)

This all goes way beyond free support but I’m feeling a bit generous today. :wink:

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

Yes, thank you for all the help.

Using preset switching might actually be helpful here, didn’t think to use that for lights.
Still might end up the same volume of translators. Not sure how much it matters though.
So I’m still trying to strategize this. Might add some more functions if I’m using presets.
I don’t understand anything in that project. Even after googling bitmap, no idea.

So I’m still working on it; will let you know what I come up with, thanks again.

For tips and tricks on bit mapping, in Bome MIDI Translatator Pro, see this link.

All MT Pro variables are 32 bit signed integers so essentially if you can control 32 LED on of states with a single global variable.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like