Here’s one way you might find useful. Create a rack with a binding for each bank of your external hardware. In my example below, I’m going to suppose my external hardware has three banks of patches.
Add an embedded rack that basically does nothing other than provide a useful fader control, which we’re going to use to choose patches on the external hardware. I’ll call that embedded rack “Patch Selector”.
Each binding maps from Patch Selector OutputGain to send out a Banked Program Change to your external hardware. The first binding maps the Patch Selector fader range to banked program change 1.1 to 1.128 (bank 1, programs 1-128). The second maps to the banked program change 2.1 to 2.128 (bank 2, programs 1-128), and so on. Of course, if your hardware has more exotic bank numbers (as most do), use those instead of 1, 2, 3 here.
Set “Enabled” state behaviour on all of these bindings, and then create rack states for each of your banks. Enable just the first binding in rack state 1, second binding in rack state 2, and so on.
Finally, enable state behaviour for the Patch Selector rack’s Output Gain.
The result is that you have a rack where you can choose the bank you want using the rack state selector, and then dial in any of the patches in that bank by moving the “Patch Selector” gain slider inside the rack (this scenario is crying out for the “Custom rack controls” feature on the wishlist).
And since you’ve set state behaviour on the Patch Selector gain, once you find a bank/patch you like, just store it as a new rack state (in this case, named something appropriate to the sound, like “Rhodes” or whatever), and then whenever you choose the Rhodes rack state, it’ll send the correct bank and program change to your external gear, just like magic!
Like this, with only a few bindings and rack states, you can scan through thousands of patches on your external synth on demand from your rack very easily to audition sounds, then lock down specific patches you want to use in your songs into rack states.
To round off the rack, you can route the audio input from your external hardware to the rack stereo output, and route the rack’s MIDI in to the MIDI out to your external hardware. That way, any MIDI you route to the rack will go out to your synth, and your synth’s audio will emerge from the rack’s stereo output. So in the context of a song, your external hardware will behave identically to a synth plugin, including how you route to/from it, and how you control levels etc. Or if you don’t route your hardware synth’s audio back into Cantabile, you can skip this step.
Some pictures to help illustrate:
Move “Patch Selector” gain inside the rack to select a patch in the selected bank on your external device:
Bindings, one for each bank of your external hardware, with bank values set accordingly in the value box:
Neil
[After I first posted this I edited/extended it a bit, to use a “Patch Selector” control, instead of Input Gain]