Unify and OSC
Like many others, I commonly use Unify as a tool to explore the many thousands of presets in the VSTs I own and to find combinations of presets that sound pleasing together.
I’m a bit impaired, so I’m trying to minimize interaction via the mouse pointer as much as possible. To that end, I devised a cool mechanism that allows me to navigate up & down the list of presets, snapshots and banks, tag favorites, and other functions on the majority of instrument and audio effect plugins using the same, consistent set of keystrokes or buttons on a touch interface. The first time I open a brand new VST, I can just hover my mouse over different elements in its GUI and press a keyboard shortcut to train my application. It can then perform those functions any time that particular VST is opened in the future.
My solution uses a combination of tools including Keyboard Maestro, Touch Portal, OSCulator, AppleScript, HTML, and Bome MIDI Translator. Since Unify is built on JUCE, it does not respond to typical AppleScript, nor does it provide a way to query things such as window titles, etc. As such, some of the remote control functionality has to be accomplished via some creative use of screen coordinates, image matching and OCR.
To simplify this and make my application more universal, here is some additional OSC functionality I’d like to see:
- Show/Hide/Bring-to-foreground a plugin’s GUI by specifying layer’s name or number as well as the desired target:
- MIDI effect;
- Instrument; or
- Effect slot number
- Show/Hide macro knobs by specifying bank number
- Show/Hide Linked Parameters window by specifying macro number
- Show/Hide MIDI controls
- Specify window coordinates and size for Unify and its child windows
- Specify tempo
- Specify MIDI trigger mode
- Toggle Preset favorite
- Toggle Favorites filter
- Load next or previous preset
- Change setting to load or load embedded
- Load a Layer Preset by providing a path relative to the Unify/Presets/Layer Presets folder
- Specify a Macro Definition file to be loaded alongside the Layer Preset and whether to replace or append to any existing linked parameters.
- Remove a Layer by layer name
- Remove a Layer by layer number
Importantly, it would also be crucial to provide a message to any registered listener when any of the above actions are preformed via the native Unify GUI so the remote control application can stay in sync with any changes made.
This is a terrific detailed list, thank you. I've pasted it verbatim into my to-do list.
Unify is built on JUCE 6.0.7. Newer versions may support some of the automation/accessibility features you mention.