Many components on the MIDI controllers can be dynamically relabeled by sending sysex containing an address and the desired text to the app's second MIDI port. This will mainly be of interest when writing controller scripts for DAWs that feature such concepts (Live, Bitwig, Cubase 12,...). Parts of the app that support this incl.
F0 7D 74 64 61 77 00 41 00 08 00 48 65 6C 6C 6F F7
would print 'Hello' to the upper text display on channel 1 of the mixer in MIDI mode.
To break that down:
Address bytes are target specific:
Mixer (target byte: 0x41) - first byte: 0 based channel number, second byte: component id
XY-Overlays (target byte: 0x43)
first byte: upper two bits address the two launchpads (0,1), resp. the two optional overlays (2,3). Lower 5 bits combined with the second byte give the pad or control index in the targeted block (up to 12 bits. Only the 7 bits of the second byte will probably be needed). For the launchpads this is somewhat redundant with the previous target message (42), which has been in the app for years.
Keyboard (target byte: 0x44)
first byte: upper two bits address the 3 pad-blocks (0,1,2), resp. the central customizable controller (3). Lower 5 bits combined with the second byte give the pad or control index in the targeted block (up to 12 bits. Effectively only the 7 bits of the second byte will be needed)
Workshop (target byte: 0x45)
Component index (up to 12 bit). This is the number you will see in the header of the editor dialog (#.. - the label uses decimal format.). Beware, this is flawed! When inserting and removing components, the indices of some controls will change. You may want to finish your layout before starting to script sysex.
Components that support dynamic text include buttons, drumpads, encoders, labels and 'lcd's (scribble-strips). Sysex-transmitted text targeting one of these will be accepted regardless of the MIDI the component is set to handle normally.
You can send text that includes unicode glyphs by using the ASCII values of their codepoint strings in 'U+....' notation or in HTML entity form '....;'.
Availability and rendering of unicode icons will be device and OS version dependent.
Clear / Back to defaults
Sending an empty or zero length string will revert buttons and pads to their original text (as given in xml). If you deliberatly want to blank out a label, send a unicode space (like for example U+2003).
Sysex for color changes
The three colors (background, text and highlight) that may be set for launchpads and controls on custom controllers can mostly also be changed via sysex. Controller and component addressing is the same as described for dynamic text above.
Color messages (Command byte = 0x08) take 8 MIDI data bytes to transmit 32bit RGBA or HSLA values:
F0 7D 74 64 61 77 00 44 00 04 08 20 00 01 7F 00 00 01 7f F7 - would set the text color of pad number 4 of the keyboard screen's first pad controller to a fully opaque bright green.
F0 7D 74 64 61 77 00 44 00 04 08 11 34 00 32 00 32 01 00 F7 - would set the same pad's background color to a semi transparent, medium saturation and brightness cyan given in HSLA notation.
Sysex for exclusive groups and toggle buttons
Some further sysex options following the same basic format are dealing with exclusive groups and toggle buttons. These are available on all screens featuring these concepts using the same 'screen target' values as the text options (plus for the keyboard and xy-pad screens the same 'sub-controller' targeting in the first address bytes). The second address byte is eventually used to target a specific group. These messages do not carry data.