I’ve done this in Song States.
Very fast switching, which is what we need when changing sounds on the fly
Set the main routing page view to graphic/diagram view.
You will have the connections from your mother keyboard connecting to each of your racks
Go to the (song) states tab then disable the connections to racks 2 &3 and add a new state with an appropriate name. For simplicity here saved as Rack 1.
Disable the connection to Rack 1, enable rack 2, add State as rack 2.
Disable the connection to Rack 2, enable rack 3. Add State as rack 3.
You should now have 3 song states:
rack 1
rack 2
rack 3
Clicking on these states will fast switch your mother keyboards connections to the relevant rack.
To bind these to a button on your kit, you need to know what the button is sending out.
My mother keyboards’ buttons can be programmed to send a range of commands and I set them to send different midi program change controls on channel 1
Button 1 pgm 1
Button 2 pgm 2
Button 3 pgm 3.
Alternately you can simply monitor what your devices’ buttons sent out by enabling the midi monitor on the connection from your device to the racks and see what it tells you.
Mine defaults to midi cc or Continuous controllers
I used these in another song and they work just as well but be wary of modifying these in you mother keyboard as lots of midi cc values are reserved for things like volume, modulation wheel etc and you could reassign a value that will stop a function such as mod wheel from working.
There are lots of free unassigned cc’s to use but your mother keyboard may have assiged these to control the stock instruments it was shipped with, so it’s best to avoid using midi cc or at the very least, avoid reassigning midi cc’s in your mother keyboard until you know what it’s presets are doing.
Once you can recognise each of your mother keyboards buttons unique output, you can create a binding to link your button to your states.
To do this, left click on the state you want to bind a bitton to;
About 3/4 way down, there’s a Create Binding option, select this and a dialogue comes up.
Source event waiting… press the button on your mother keyboard that you wish to bind to your state. For this example, button 1 sending midi program change1.
The panel on the left of this dialogue will populate.
Select the incoming info from your keyboard. There will be a few things come but in this example we’re looking for that program change on ch 1.
Double click that in the list and and another dialogue comes up…
Your source info is already populated, you just need to select the target info to the right…
Object: Song
Point: Load State with Index
If you look at your list of song states we created on the far left: Aside from the names we gave them, they’re also numbered. That’s the index number you use to bind that state to this button.
Repeat the above for the remaining states, using the different state index values to bind them to your chosen button and you’re all done.
… A thing to watch when creating bindings within the same song: If you have already mapped an incoming command from your source device, e.g. pgm change 1 on ch1, Cantabile won’t allow you to map that to your new target. i.e. the Load State with index does not give you the option to seiect State index number, the option is just not there. Took me a while to understand why that option was missing.