One pretty neat way to solve control from external hardware is to provide one midi channel that is “panel mode”. Some synths with layer options have this, the Nord Lead 3 for instance. Then, one midi channel work just like if you tweaked the synth panel/GUI itself. So, for instance, the filter cutoff has a single CC, and what layer/voice(s) it controls depend on the currently selected channel/layer(s), just like if you tweaked the filter knob on panel/gui. You could then use midi note on that channel to select voice, just like clicking on the interface. The nice thing with this is that you can quite easily map a hardware controller to work just like a physical panel for the synth, without having to map gazillions of different parameters. (Though, optimally, you would want that to have it’s own midi in directly into the plugin, and not via the DAW midi, so you can also record tweaks as automation, and not as midi that changes function depending on what’s selected in the GUI).