Hey @ggmanestraki !
I agree, though, like you, I’ll keep thinking it over to find a way to make it work for me! I admire your commitment to editing the plugins you use to conform to your MIDI Remote implementation, which, obviously, you’d need to do every time you bought a new plugin.
It appears that the design philosophy of the MIDI Remote API was informed by the limitations/capabilities of hardware controllers that, obviously, have a finite number of surface elements. It makes sense then that MIDI Remote requires us to create the surface layout before value binding and mapping. I noticed that Mackie’s MCU protocol will map and value bind a plugin’s RCE layout to the rotary encoders precisely, so it would be great if MIDI Remote could do that, too.
Creating a software control surface, though, means that it isn’t necessarily restricted by physical limitations (84 or 128 controllers being a case in point), and allows for the option of creating controllers dynamically; however, this is not an option with MIDI Remote. I think insert plugins need to be treated differently.
Ideally, I’d like my software control surface to look at the plugin in focus, determine the plugin’s number of unique parameters (i.e., ignore the repeated parameters), dynamically create the corresponding number of surface knobs (<= 128) in the host plugin parameter bank zone, then map and value bind each knob to each unique plugin parameter. Right now, my software surface can determine a plugin’s unique parameters and arrive at the total number of surface knobs needed:

Going back to the stock StudioEQ plugin from my initial post, because all 128 parameter knobs are populated, the software adds each parameter once only to the list, uniqueLabels, and determines that the plugin requires only 21 of the 128 existing parameter knobs. That’s as far as I can get though, because there’s no way to retrospectively create 21 parameter knobs, or remove 107 parameter knobs. I’d even settle for populating the first 21 of the 128 parameter knobs and leaving the remaining knobs unmapped. Unfortunately, though, MIDI Remote populates all 128.
I think this could be achievable by modifying the makeParameterValue() method to include a parameter that represents a plugin’s unique label:
var uniqueLabels = ['1 Gain', '2 Gain', '3 Gain', '4 Gain', '1 Freq', '2 Freq', ...]
var totalNoOfParams = 21
var insertViewer = selectedTrackChannel.mInsertAndStripEffects.makeInsertEffectViewer.followPluginWindowInFocus()
var insertsParameterZone = insertViewer.mParameterBankZone
for (var i = 0; i < 21; ++i) {
var parameter = 'Parameter' + i
var pluginParameter = surfaceElements.paramBank[parameter]
var pluginParameterValue = pluginParameter.mSurfaceValue
page.makeValueBinding(pluginParameterValue, insertsParameterZone.makeParameterValue(uniqueLabels[i]))
}
I’m really eager to see what the next update includes! Hopefully, Steinberg has been following the MIDI Remote discussions here.