Let me tell you all what I’m working on right now, because I think this is really exciting.
My goal is simple: I want to be able to control every parameter in a VST synth from hardware, almost as if the VST were a real hardware synthesizer.
Normally there are always limitations. Some synths have hundreds or even thousands of parameters, standard MIDI CC only gives you a limited number of controls, and sometimes the manufacturer or the DAW decides what you can and cannot control.
I’ve now managed to get around those limitations.
Instead of letting Ableton directly host the synth, I’ve built my own host that itself runs as a VST inside Ableton:
Ableton Live → My VST/Host → Synth VST
And this changes everything.
I can create my own control system for the synth instead of being restricted by its original MIDI implementation. I can use CC, NRPN, SysEx or my own mapping system, giving me enough addresses to control hundreds or even thousands of parameters.
Ableton Live has never been particularly friendly when it comes to SysEx. Fortunately, there is a way around this limitation.
By routing SysEx through macOS’s internal MIDI port — the IAC Driver (IAC Bus) — the SysEx data can bypass Ableton Live completely.
Instead, the SysEx messages are sent directly through the IAC Bus to our host application, which receives them and forwards them directly to the VST.
Controller → IAC Bus → Host → VST
Ableton Live can continue to host the music project while our host handles the SysEx communication with the VST.
And this is probably the most exciting part: I’m no longer dependent on how the manufacturer intended the synth to be controlled. If a parameter is available to the host, I can address it through my own system, even if the manufacturer never provided a MIDI CC, NRPN or SysEx for it.
So instead of the manufacturer deciding which parameters my hardware controller can access, I decide how the synth is controlled.
I can organize the parameters exactly the way I want, create pages and groups, and map them to hardware controls.
The same idea can work with completely different synths. Instead of adapting the controller to every manufacturer’s idea of how things should work, I can create one consistent control system for all of them.
Right now I’m experimenting with letting Electra (or iPad) handle the whole control surface. The idea is that Electra (or iPad) becomes the front panel for whatever VST I load, with all the controls laid out exactly the way I want them.
So I could load a completely different synth and Electra (or iPad) would become the control surface for that synth instead. In effect, the VST provides the sound engine, while I decide what the physical/user interface should look and feel like.
The end goal is that when I load a VST synth, I hardly need to touch the computer screen at all. I want it to feel like I’m sitting in front of a hardware synth.
And it’s actually working.
None of this will work without first reverse engineering the VST with the help of ChatGPT.
Reverse engineering means systematically analyzing how the VST actually works by testing its behavior, identifying patterns, and determining the internal logic needed to make it respond correctly.
This process can take some time, as it may require many tests, comparisons, and adjustments before the VST’s behavior is fully understood. Once that is done, the software can be adapted to make the VST behave as intended.
ChatGPT can help analyze the VST to discover what functions and parameters are available, what they actually do, and how they can be accessed and controlled.
Instead of guessing, ChatGPT can help test and map the VST systematically — identifying parameters, MIDI messages, SysEx commands and other available control methods.
The result is a clear map of what can be controlled, what each function does, and exactly how to call it.