Modulating plugin parameters from a control surface in Waveform.
-
Stephen Spackman Stephen Spackman https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=778582
- KVRer
- 4 posts since 19 Dec, 2025
Please forgive me, I'm new to this world, and I'm feeling very stupid at not being able to accomplish a basic task.
The goal is a simple one: adjust a parameter (say, Macro 1) of a plugin (say, Myth) from a hardware controller. Conceptually, there seem to be three ways of doing this: (1) the controller can send a MIDI CC which is then learnt by the plugin; (2) the controller can send a CC which is then learnt by Waveform and converted to a parameter update; (3) the controller can send a CC which is intercepted by a control surface script, converted to a parameter update, and forwarded to Waveform.
After a day of trying, I haven't been able to get any of these to work.
(1) doesn't work because (a) Myth happens not to support MIDI learn (arguing that the parameter methods are technically superior) and (b) this would set the value to the absolute setting of the CC (meaning I'd need to write all the default values for all the presets I want in a notebook, the sort of thing the software is supposed to take care of) rather than letting the surface adjust the parameter relative to its initial state.
(2) doesn't work because of (1)(b): the macro, rather than being adjusted, is simply set to whatever absolute value the CC has, which is not workable.
(3) doesn't work because although parameters are readable as well as writable, Waveform seemingly only allows mappings by CC number, not by parameter number. You can send parameter updates from a control surface script but you have no way of controlling which parameter is being updated.
(Actually, there's an additional difficulty that argues against (1) and (2) in my case which is that, by itself, my physical controller doesn't hold its state; it returns to 64 when I let go. So if happen to want an adjustment persisted, using a script is actually necessary. But I grant, that's a consequence of my weird hardware, with a wibbly nub in place of a knob or a fader.)
It had occurred to me that you might be able to write a script that hybridises (2) and (3), using the language of parameters to read the plugin state and then faking up an inbound CC to make the mapping stick, but it seems that control surface scripts can only send MIDI upstream.
I can't really believe that it's not intended for physical knobs to be able to control plugins. What am I missing?
The goal is a simple one: adjust a parameter (say, Macro 1) of a plugin (say, Myth) from a hardware controller. Conceptually, there seem to be three ways of doing this: (1) the controller can send a MIDI CC which is then learnt by the plugin; (2) the controller can send a CC which is then learnt by Waveform and converted to a parameter update; (3) the controller can send a CC which is intercepted by a control surface script, converted to a parameter update, and forwarded to Waveform.
After a day of trying, I haven't been able to get any of these to work.
(1) doesn't work because (a) Myth happens not to support MIDI learn (arguing that the parameter methods are technically superior) and (b) this would set the value to the absolute setting of the CC (meaning I'd need to write all the default values for all the presets I want in a notebook, the sort of thing the software is supposed to take care of) rather than letting the surface adjust the parameter relative to its initial state.
(2) doesn't work because of (1)(b): the macro, rather than being adjusted, is simply set to whatever absolute value the CC has, which is not workable.
(3) doesn't work because although parameters are readable as well as writable, Waveform seemingly only allows mappings by CC number, not by parameter number. You can send parameter updates from a control surface script but you have no way of controlling which parameter is being updated.
(Actually, there's an additional difficulty that argues against (1) and (2) in my case which is that, by itself, my physical controller doesn't hold its state; it returns to 64 when I let go. So if happen to want an adjustment persisted, using a script is actually necessary. But I grant, that's a consequence of my weird hardware, with a wibbly nub in place of a knob or a fader.)
It had occurred to me that you might be able to write a script that hybridises (2) and (3), using the language of parameters to read the plugin state and then faking up an inbound CC to make the mapping stick, but it seems that control surface scripts can only send MIDI upstream.
I can't really believe that it's not intended for physical knobs to be able to control plugins. What am I missing?
- KVRAF
- 4886 posts since 3 Jan, 2003 from Vancouver
If your hardware does something extra that you don't want, can't you delete the unwanted information afterwards?Stephen Spackman wrote: Fri Jan 09, 2026 6:36 am (Actually, there's an additional difficulty that argues against (1) and (2) in my case which is that, by itself, my physical controller doesn't hold its state; it returns to 64 when I let go. So if happen to want an adjustment persisted, using a script is actually necessary. But I grant, that's a consequence of my weird hardware, with a wibbly nub in place of a knob or a fader.)
Are you recording the MIDI CC data or are you recording parameter automation?
Surely there must be consensus by now...
-
Stephen Spackman Stephen Spackman https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=778582
- KVRer
- Topic Starter
- 4 posts since 19 Dec, 2025
Thanks for the reply. Sorry, I didn't explain that clearly—the controller in question is an Eigenharp, which has 3DOF keys, some of which are repurposed as physical CC controllers. That works fine except that (like regular MPE keys) they return to a neutral position when released, which is rarely what you want for general parameter nudging. In a script I can easily make them behave more like conventional knobs or faders, which hold position, but that requires that the script be able to send downstream MIDI as well as receiving upstream MIDI, which for some reason Waveform doesn't seem to allow. Either way, that's my problem for having an obscure controller, and I expected to have to deal with that in a script.
But in any case, parameters are better than CCs, not least because they're readable, and I'd rather speak the language of parameters downstream. But, as I say, that fails, too, because if there's a way to choose parameter connections, I can't find it. There's a single item “set quick control parameter…” in the plugin pop-up menu, but no “connect controller parameter #n to control parameter…” item. And everything else seems to be in the language of MIDI CCs, which there's no documented way of sending from a control surface.
So—I'd *rather* record parameter automation, but I can't find a way to record *either* parameter automation (there's no map to connect to the plugin that I can find) *or* MIDI CC (there's no way of sending it from a controller script that I can find).
But in any case, parameters are better than CCs, not least because they're readable, and I'd rather speak the language of parameters downstream. But, as I say, that fails, too, because if there's a way to choose parameter connections, I can't find it. There's a single item “set quick control parameter…” in the plugin pop-up menu, but no “connect controller parameter #n to control parameter…” item. And everything else seems to be in the language of MIDI CCs, which there's no documented way of sending from a control surface.
So—I'd *rather* record parameter automation, but I can't find a way to record *either* parameter automation (there's no map to connect to the plugin that I can find) *or* MIDI CC (there's no way of sending it from a controller script that I can find).
- KVRAF
- 4886 posts since 3 Jan, 2003 from Vancouver
Hmm... I don't ever really use twiddly bits (and have never heard of yours) so I doubt I can help you. For automation I just add nodes and move them around.
So all I can really do is what I always do and strongly recommend that you open the Controls Panel at the bottom to what we sarcastically call "Useful Mode" and maybe you'll find what you're looking for, whether it's the big "MIDI Learn" button that shows up or something in the "Parameters" tab or the "MIDI Controller Mappings" tab. From what you've been saying it sounds like you've already tried MIDI Learn and didn't like it, but it also sounds like you maybe didn't...?
I like to try to help, but I'm a bassist at heart. A device that kinda sounds like a MIDI device but isn't one and can do something and has or needs multiple layers of scripting... Way too complicated for me.
So all I can really do is what I always do and strongly recommend that you open the Controls Panel at the bottom to what we sarcastically call "Useful Mode" and maybe you'll find what you're looking for, whether it's the big "MIDI Learn" button that shows up or something in the "Parameters" tab or the "MIDI Controller Mappings" tab. From what you've been saying it sounds like you've already tried MIDI Learn and didn't like it, but it also sounds like you maybe didn't...?
I like to try to help, but I'm a bassist at heart. A device that kinda sounds like a MIDI device but isn't one and can do something and has or needs multiple layers of scripting... Way too complicated for me.
Surely there must be consensus by now...
-
Peter Widdicombe Peter Widdicombe https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=336849
- KVRian
- 1205 posts since 29 Aug, 2014
Do a google search on midi pick-up mode for rotary encoders
or tracktion waveform pickup mode midi.
https://encrypted-vtbn0.gstatic.com/vid ... GJ9Mvb1aqL
In theory there is "pickup mode" where you have to twiddle the control until it PASSES the value it had before, and then it picks up from there; or an incremental mode, where all tweaks of the knob are seen as incremental changes (probably better if you have the equivalent of rotary non-ended controllers; as "pots" normally have a fixed value based on where they are positioned; sort of like a fader where there is a min and max value based on where it is physically...)
or tracktion waveform pickup mode midi.
https://encrypted-vtbn0.gstatic.com/vid ... GJ9Mvb1aqL
In theory there is "pickup mode" where you have to twiddle the control until it PASSES the value it had before, and then it picks up from there; or an incremental mode, where all tweaks of the knob are seen as incremental changes (probably better if you have the equivalent of rotary non-ended controllers; as "pots" normally have a fixed value based on where they are positioned; sort of like a fader where there is a min and max value based on where it is physically...)
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1
-
Stephen Spackman Stephen Spackman https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=778582
- KVRer
- Topic Starter
- 4 posts since 19 Dec, 2025
The problem with pickup mode—unless I can insert a script in the middle—is that as soon as I take my finger OFF the knob it will reset to either 0% or 50%. An incremental mode would be a little better, since at least it would reset to the initial value (which is at least likely to be making a sound).
But why is there no way for a script to simply control a parameter? I must really not be understanding how the product is intended to be used!
But why is there no way for a script to simply control a parameter? I must really not be understanding how the product is intended to be used!
