RGB macro pad - respond to events (via MIDI or otherwise)?

I have a deposit on a Framework 13 but I just saw the RGB macro pad available as an input module for the 16 and I’m tempted to switch my order, even if it means giving up my place in the queue…

I use Ableton Live for digital audio performance and production. The Ableton interface maps very nicely to a grid of coloured buttons (like the macro pad) and indeed there are plenty of peripheral hardware controllers that communicate with Ableton via MIDI to provide exactly that.

I’m wondering if the QMK firmware for the macro pad would allow me to address RGB for each key individually so that I could match button colour on the macro pad to the colour of the relevant row and column of “clips” in Ableton’s grid-based UI.

I see that QMK has MIDI commands, but these seem to be send-only, rather than allowing QMK to respond to incoming MIDI values.

I’ve had a quick look at the QMK and SignalRGB docs. Neither of these give me the confidence that I could do what I’ve described above. Has anyone done something like this? Any ideas for how it could be done?

Yeah, stock QMK mostly uses the standard usb HID protocols for keyboards and mice/pointers, which is just send / device-to-pc one-way communication. With the exception of a few signals like capslock, numlock, scroll-lock leds. Though, I have used that to send a few commands pc-to-device.

Best way to find if someone has already done something similar would be to ask on the QMK forum or discord. https://docs.qmk.fm/#/support

For how it could be done, you could code something using the rawHID function. Probably the proper thing to use would be the in-development QMK XAP protocol (aka QMK API, VIA+OpenRGB+other rawhid rolled into one). You also could perhaps use the communication of add-ons like Vial, OpenRGB, SignalRGB, etc. But those are really QMK forks, and for creating something like this, for best future compatibility, you’d want to stick to official QMK.

1 Like

There is this QMK documentation page on the MIDI internals that is pretty vague, but implies that you could implement a custom MIDI device that handles input:

It’s beyond my mediocre QMK coding skills, though, so I can’t really point you any further.