|
|
||||||||||||||||||||||||||||
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,...). This can be used with the DAW controller screen in MIDI mode and all customizable screens. The basic sysex format is the same for all of them (all values below in hexadecimal format): 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
Big Time (target byte: 0x42), XY-Pads (target byte: 0x43), Keyboard (target byte: 0x44) and Workshop (target byte: 0x45) components can either be addressed by their ID string (if you gave them one) or by their stream index. The stream index is the number you will see in the header of the editor dialog (#.. - the label uses decimal format.). Beware, this is a bit flawed! When inserting and removing components, the indices of other controls may 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). Enable / Disable controls Command byte = 0x02 can be used to enable and disable controls: F0 7d 74 64 61 77 00 43 7F 7F 02 70 30 00 00 F7 would disable controls with ID "p0" on the XY-Pads screen. A 1 in the message's single databyte enables the target and a 2 toggles its enabled state. Set an Index Command byte = 0x04 allows to set the displayed tab of tabbed-groups or the index of (absolute) steppers: F0 7D 74 64 61 77 00 44 00 31 04 00 03 F7 would set control #49 (31h) to index 3 on the keyboard screen. The first of the two databytes can signal relative stepping and block MIDI output: If it has the first bit set (0x01), targeted controls will cycle through tabs or items. Set the second databyte to 0x01 as well to reverse the direction. Bit 2 in the first databyte (0x02) instructs the targeted control to not send MIDI in response to being set. Visibility Command byte = 0x06 can be used to show or hide controls: F0 7D 74 64 61 77 00 45 00 0E 06 02 F7 would toggle the visibility of control #14 (0Eh) on the workshop screen. Bit 1 in the single databyte hard-sets the visibility (0 - hidden, 1 - visible). Bit 2 enables toggling depending on the control's current visibility. If bit 3 is set, the 'hidden' state will only be 'invisible' but preserve the hidden control's space in the layout. 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 43 00 04 08 20 00 01 7F 00 00 01 7f F7 - would set the text color of pad with #4 on the XY-Pads screen to a fully opaque bright green. F0 7D 74 64 61 77 00 43 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.
| ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||