A variant of the current sysex type control, with some features also lifted from preset type.
- Enter a patch name into a synth
- Display a patch name from a synth
- In the picker case, run a routine to read in patch names from synth, then use this picker to select patches by name.
- The picker might also drive a dynamic label somewhere else in the layout.
- Once read in to the picker, the picker does not transmit the names again - it drives MSB/LSB/PC to recall a patch
- Displaying dynamic “scribble script” in a label
Uses the existing sysex formatting, with one addition
- New S placeholder, type string, selectable 1 - NN bytes
As current, L & V are options, with existing controls, single byte L, up to four byte V.
If the S value is provided input length less than NN, remaining positions are filled with 32 (space)
If the S value is provided input length greater than NN, it is truncated
Sysex string requires named ticks - hard coded selection. The NAME field is where sysex string stores and retrieves its strings.
Send on release only is a hard coded selection (to preclude large data bursts when scrolling through a large number of named ticks)
Sysex string control can be a button, knob, slider, cross fader, or picker.
When the control is released, it will send the appropriate sysex string, with the S value using the “name” field retrieved from named ticks (plus L and V, if included).
(Button might be slightly different, send the first named tick as the off string, last named tick as on string, with send on only as an option.)
Managing when to store a new string.
From keyboard, use the store / recall options as used in presets
When a recall control (button, toggle) is assigned:
- off, the sysex control can be changed without sending any sysex string.
- on, the sysex control will send its sysex string when released
- transition from off to on, currently referenced sysex string is sent
When a store control (button, momentary) is assigned:
- off, no action
- when toggled on, the current entry can be overwritten via keyboard
- the string prompt and keyboard is presented
- When enter is pressed to conclude entry, the string is stored in the current named tick and transmitted in sysex string format (observing truncation, padding, and valid character constraints)
- if cancelled, no change is made, no value transmitted
When received via MIDI - one approach is to presume the sysex string will only be transmitted when requested via the layout, so whenever a matching string is received, it is stored.
If a valid sysex string is received via midi, this value is stored in the named tick, is not retransmitted
- If the string definition includes a V value, the named tick with that value (same as current V matching) is selected and updated
- if the string definition does not include V value, the current named tick string value is updated
- need to ensure that any “label value sources” are updated on midi update
- padding and truncation should not be required - if length doesn’t match, there is not a match, valid character constraints are enforced