Match Ableton Clip Color to reflect as LED state on MIDI Pads for Akai APC40 MK2

409 viewsCSS Feature Requests
0

A lot of use on the forum are asking for this feature. We want the Akai APC40 MK2 PADS to light up based on the clip color of the Ableton clip that gets loaded on that PAD.

why did you choose to only go with 3 states for LED feed back? what are you going to implement so that we have LED color matching to clip color on Ableton?

we bought and purchased CSS with the idea that MIDI Mapping would go by a lot faster with your tool you created, so far it’s been more of a hassle trying to get your program to work appropriately mainly because the APC40 has 3 modes like MCBeats has mentioned on multiple forum posts and responses.

MCBeats has even provided the solution to set the modes (giving us a template ready for you to update on your program so that it’s easier on the users to choose between modes (mode 0, 1, and 2).

admin Changed status to publish May 22, 2024
Attached Files:
0

I wouldn’t mind trying to make this work with reactions. Might take a few days though. I don’t have your device, but can test it with my MIDI fighter Twister.

If you want to try it yourself, this spreadsheet I made for personal use with CSS might help you out: https://docs.google.com/spreadsheets/d/1zPrIwQMzA5jNG_giBaM9SDW-fMJvc5F1…

It makes it a bit easier to search through the options available by simply using the spreadsheet’s search function. I’ve also copied (most of) the descriptions that is provided when hovering over an option in CSS. It’s still a work in progress and might even contain mistakes. If you find any, let me know and I’ll adjust it. You can always copy the spreadsheet to your own Google Drive and adjust to your liking.

admin Changed status to publish May 22, 2024
Attached Files:
0

I’ve begun researching a bit about your device, because I don’t own it myself and found a chart that shows which velocities produce which colors on the pads.

https://forum.bome.com/t/new-akai-pro-apc-mini-mk2-initial-led-mapping-s…

This is for the Akai Pro APC Mini mk2 but I’m guessing it will be the same for the normal version of this controller. I’ll add this list of colors to the Colors tab in the spreadsheet I’ve linked, for reference.

On this forum post, OP also mention that brightness and blinking state of an LED on the device is triggered by the channel number, where sending a midi message to a pad through channel 7 will produce the brightest light and anything beyond channel 7 will produce various states of blinking. Someone with any of these devices might need to confirm this.

admin Changed status to publish May 22, 2024
0

Made an attempt at assigning Ableton’s color indices to the colors of the APC Mini mk2 (and their corresponding velocities). There are little colors actually overlapping between the 2 palettes, most of it was guesswork what would work best. In the end, I was only able to assign 44 out of the 70 colors Ableton provides as options. So it might be wise to stick to a limited amount of colors when coloring Clips in Ableton.

Next up I’ll try making a script using these connections between the indices and colors. I’m thinking of making a python dictionary, if that’s possible, where the indices serve as the key and the corresponding velocity would be the value. As a safety, when an index is not found it would return a standard velocity (like black or something).

admin Changed status to publish May 22, 2024
0

A little update on the script. I’m in the process of writing code that should send velocities to the buttons on a controller based on a Clip’s color index. Because I don’t the AKAI controller OP mentioned, the script is set to work with the MIDI Fighter Twister at the moment (using Remotify’s template for the device).

I made a dictionary of colors and a list of buttons and assigned each to a modifier.

The color dictionary doesn’t contain all color indices. When a color index is not present, a standard velocity will be sent from key -1 in the dictionary. In this case key -1 refers to velocity 0, which produces whatever the Off color is that you’ve set for the corresponding button (using MIDI Fighter Utility). So it’s best to set all the Off colors for the buttons to Black.

Only the MIDI signals for the 1st virtual bank of the MFT are collected in the list.

The code runs through all tracks and scenes contained within the session box, checks each clip slot for a Clip. If it has a Clip with a valid index, it will produce the corresponding color on the device. If it has no Clip or a Clip with invalid index, it will produce the Off color (in this case). When the session box isn’t full of tracks or scenes, it will produce an indexError that invokes the exception, where also the Off collor will be assigned to the corresponding button.

The code runs from an Action within a Reaction.
I made one Reaction that invokes the code via button press (bottom right button).
I made another Reaction that invokes the code when initializing the script and when moving the session box.

There are a few hurdles I’m facing at the moment:
1. How can I make the colors reload after changing the color of a Clip inside the session box? I tried making the script add a Color Index listener to the currently highlighted clip(s) but that didn’t work out as I hoped it would.
2. What other changes does the script need to keep track of? I’m guessing changes in Track and Scene numbers. The addition and removal of clips within the session box. Are there more?

admin Changed status to publish May 22, 2024
0

Here’s the current state of this project. I added a version for the APC40 MK2 (untested, because I don’t own the device) and a version for the MIDI Fighter Twister (tested).

What the script does in its current state:
– Sets button colors to Clip colors if the the Clip colors are made of “valid” color indices (i.e. color indices that have a velocity assigned to them). On invalid color index, a default “Off Color” will be assigned (in case of the APC40 that’s black, in case of the MFT that’s whatever Off Color has been installed in the first virtual bank using the MIDI Fighter Utility)
– Clip slots without a clip also get the default Off Color assigned.
– The updating of button colors happens when:
– the script is initialized
– a color index of a clip inside session box has changed
– the session box is moved

What the script does NOT do in its current state:
– It doesn’t work as expected when using the in-app Session Box mapping for more than just setting the boundaries of the session box (i.e. if you assign buttons or colors inside this Session Box mapping, my script won’t behave as we would want it to)
– Button colors aren’t updated if you change Clip colors indirectly (e.g. when you use the right-click option on a Track to change all its Clip’s colors into the Track’s color).
– There are probably a lot more ways this script doesn’t work in a useful way.

This comment by JohnC helped me find a way to make the colors on the controller adapt after a clip color was changed within the session box.

I’ll put this project on hold for now, as I’ve lost my interest in it a bit + it basically does what I set out to accomplish; it only doesn’t react well with extra stuff. I might return to it from an angle, by using the “user.py” custom coding method (which I just recently learned about).

I also think it might be possible to use Ableton’s colors on the APC40 via SysEx messages. SysEx is entirely new terrain for me which I want to explore on another controller first, one that I own: a Nektar Pacer. The Pacer doesn’t allow its colors to be changed using MIDI velocity but I’ve reached out to Nektar and they’ve sent me documents on its SysEx messages, which should be able to change the colors dynamically, using the “Send raw MIDI data” action. If this works, I’ll return to this project and I’ll try to make all 70 Clip colors appear on the APC40’s pads.

admin Changed status to publish May 22, 2024