|
||||||||||||||||||||||||||
SysEx 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. Unicode 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:
Examples 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.
Sample code and realworld examples
The Cubase / Nuendo 12 MIDI remote and Bitwig controller samples use these options to relabel buttons, print parameter names and values to textfields, set clip colors etc. The javascript source files contain utility methods to format the sysex messages. 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.
| ||||||||||||||||||||||||||
|