Thanks for your questions, I’ll try to clarify below.
Sorry for the lengthiness - trying to be as accurate and concise as I can.
On the Launchpad there are eight “Mute” buttons, and eight “Solo” buttons. These buttons control the toggling of the Track Activator on eight Ableton channels.
Ableton Solo is not involved.
8 x Mute buttons with LED feedback
8 x Solo buttons with LED feedback
1 x Solo mode button with LED feedback (selects between exclusive and non-exclusive mode)
1 x All Solos off button with LED feedback (enabled if any Solo’s are active)
A Launchpad Mute button controls the Track Activator (TA) of one Ableton channel, and simply toggles it between on and off.
A Launchpad Solo button controls the TA of one Ableton channel and toggles it on and off.
However, if no other Solo button is already engaged, then pressing a Solo button also toggles the other channel TAs that are currently on (so that they turn off).
If solo is working in exclusive mode, and an additional Solo button is pressed, then that channel TA is toggled (on) and the previous channel that was soloed has it’s TA toggled (off).
If solo is working in non-exclusive mode and an additional Solo button is pressed, then it toggles it’s channel TA, but no other TA is toggled.
If solo non-exclusive mode is changed to exclusive mode while multiple Solos are engaged, then the next Solo button pressed toggles all other channel TAs that are on (to off).
Finally, when the last remaining engaged Solo button is pressed, then the TAs all return to their status before any Solo button was pressed.
In addition to the Solo and Mute buttons on the Launchpad, there is the “Solo exclusive/non-exclusive mode” button, and an “All Solo disengage” button. The latter button is enabled if one or more Solo buttons are engaged. If pressed, all TAs are returned to their status before a Solo button was engaged. This button is useful in Solo non-exclusive mode, when there may be several Solo buttons engaged at the same time.
TA status and variables
The way this is implemented requires that three states of a TA are available within MTP:
1. Its current status within Ableton
2. Its status when no Solo is active (referred to as Mute A mode)
3. Its status when one or more Solos is active (referred to as Mute B mode)
There are 32 global variables being used like this:
1. Note number that defines a TA x 8
2. Current TA status of 8 x Ableton channels
3. Status of TA x 8 - Mute A mode
4. Status of TA x 8 - Mute B (Solo) mode
Mute A mode and Mute B (Solo) mode variables are necessary to separate TA status when a Solo is engaged, from TA status when no Solo is engaged. When you disengage the last Solo button, the TAs need to return to the state they were in before Solo was engaged. Also, you don’t want to toggle a TA when you change modes, if that TA has the same status in both modes.
Important things to remember
An Ableton Track Activator can only be toggled via midi from its current state to its other state (on or off), it cannot be set to on or off explicitly.
When a TA is toggled it will send midi that indicates it’s new state. It reports its either on or off via note on velocity.
In other words, you can’t tell a TA to be on or off, you can only toggle it from the state that its in to the other state. However, it will report what state its in (on or off) after it has been toggled.
When you change from Mute A to Mute B or back again (go from no Solo being engaged to one or more Solos being engaged, or vice versa), the status of channel TAs needs to be compared between Mute A and Mute B so that only TAs that need to be toggled, are toggled. For example if you press the Solo button for a channel that currently has its TA on, and no other Solo is engaged, then that TA should not be toggled, or it will end up in its off state when it should remain on.
The Ableton control being used throughout this design is only the Track Activator, which is recorded as an aspect of mixer automation in Ableton.
Ableton’s Solo is not used in this design, because it is limited by not being able to be recorded as mixer automation. So, this design implements a “simulated” Solo that uses Track Activators instead.
Many thanks for your tips!
Certainly I wouldn’t introduce a delay if things worked without it. The delay is necessary when switching between updating the TAs from Mute B (Solo) mode to Mute A mode when the last solo is disengaged, as described above.
I think it may be quite challenging to make only one translator responsible for changing a given variable, but I’m looking into it,