Program change with 2 phycisal Keyboard


it’s always the same problem with new explanation.

I have 2 physical keyboards named KEY1 and KEY2
In C3 performer I have songs with 2 racks named RACKKEY1 and RACKKEY2

Program KEY1 send program change to change simultaneously

  • Song (sound played by KEY2) on midi ch2
  • RACKEY1 Rack state (sound played by KEY1) on midi ch3

All is ok, it works.

I want
Program KEY2 send program change to change Song without change sound played by KEY1.

In fact i want that song control RACKKEY2 but not RACKKEY1.

Have you got the solution ?

Thank you but it doesn’t work.
I don’t know if you understand what i need.

You write “The rack bindings can be used to change rack states”, i don’t want song change RACKKEY1 rack state.
You write “if you wish but in this setup they are there to ensure the same sound loads for both songs” i don’t want same sound loads for both songs.

I just want song called by KEY1 don’t control at all the Rackkey1.
Only the Key2 control the Rackey1

Sorry lolol, I removed the post. Maybe @Torsten Can help you, he is very smart about Cantabile. Let’s see if he can help sort it out.



Hi guys,

since @dave_dore asked, I’ll try to pitch in here. But before addressing the issue, @lolol, allow me a word of advice:

In the long run, it is better to work WITH the Cantabile approach of setlists, songs and states than AGAINST it, which - to some extent - is what you are trying to do. I think I can offer you an approach to do what you are trying to achieve (in my next post) - but I believe this approach is pretty limited and will not satisfy you in the long run, once your setups become more complex and sophisticated. And they will - the longer you use Cantabile, the more you will appreciate its possibilities.

So in principle, I’d advise you to stay within Cantabile’s paradigm of a song establishing a full configuration of your setup, with song states and rack states changing that configuration WITHIN the song, but not across songs. That is the fundamental paradigm of Cantabile, and it is definitely worth adapting your workflow to this general logic, even if it means making some changes to the way you are used to doing things.

I have a similar setup with two keyboards, an upper and a lower keyboard playing different sounds, and I’ve tried various approaches to allow me independent changing of their patches, just like on two physical synths - but after years of using Cantabile, I’ve settled on the fact that Cantabile is best when managing a song as an INTEGRATED setup of multiple input devices and multiple tone generators as ONE configuration, with sub-configurations via song states and rack states. So now I have some “universal” configurations (i.e. not customized to a specific song) that are usually sorted by the “lower” keyboard.

So I have one song “Rehearsal Piano-Organ” that has a piano with a blendable organ layer on the lower keyboard and multiple options (selected via song states) for the upper keyboard (organ, sax, synth, brass). Another song is “Rehearsal Piano-Strings” - same with a string layer instead of an organ layer. Then there is “Rehearsal Rhodes” and “Rehearsal Wurly” - you can guess what they do… And of course, there is “Rehearsal B3” with a two-manual B3 with various configurations as song states.

So when trying a new song, I first select and load the fundamental sound (piano or Wurly or Rhodes), load the corresponding song, and then decide on the right complementary sound for soloing, accents, etc) on my upper keyboard. Selection of that song state is achieved via my controller buttons on the upper KB.

This way, I stay within Cantabile’s logic and can still be pretty flexible.

And of course once I’ve decided a song stays in the repertoire, I build a bespoke setup with multiple instruments, layers, states and fine-tune it in an individual song file.

Maybe give this approach some thoughts before entrenching too firmly in your “two-keyboards-two-racks” paradigm.

To keep things clean, I’ll post a separate reply with my attempt at a solution…





OK, now for a possible approach. As I understand it, you want to be able to do the following:

  • Accept program changes to change the current song from both keyboards
  • I assume that you are sending program change 1 to go to song 1 in the set list, program change 2 to go to song 2, etc.
  • When you change the song with a PC from Keyboard 2, you want the rack state of Rackkey2 to change with the song, but you want the rack state of Rackkey 1 to stay as it is
  • When you change the song with a PC from Keyboard 1, you want to change the song, the rack state of Rackkey1 and of Rackkey2 to change

You can achieve this by editing the properties of Rackkey1 so that its state doesn’t get controlled by the song:

  • While the rack is open for editing and has the focus, select File->Rack Options
  • Un-tick the box “let the parent song control this rack’s selected state and gain”

With this, your Rackkeys1 will remain as it is when switching songs.

Now to switch your songs and rack states, you need two three bindings:

  • in your background rack, you’ll need two bindings that react to program changes from both your keyboards, bound to SetList–>Load Song by Program (Instant) or SetList–>Load Song by Index (Instant), depending if you want to select your songs by the program number you give them in your setlist or their position in your setlist.
  • In your song you’ll need a binding that reacts to program changes only from keyboard 1, program change to Rackkey1–>Select State by Index or Select State by Program. This will make your Rackkey change its state based on the program change from keyboard 1

I’m just unsure if the two bindings might collide somehow, so that the program change to Rackkey1 is somehow messed up by the song change happening in parallel, so you might have to try if it works or not - maybe you’ll have to use “load Song (delayed)” for your background rack bindings to avoid it.

@brad: how would the processing order for such a sequence of bindings be - do you think they would run through nicely - or would the song change somehow hinder the rack state change?

@lolol: you see, it’s all a bit complex and possibly risky - that’s why I’d recommend to go with the “clean” approach outlined in the previous post.




thank you very much Torsten.

I think the last solution is good. I haven’t seen this rack option before.
I will test tomorrow.


Hello, Thank you Torsten,

i’ve tested and it’s perfect, it 's exatly what i want, the song don’t control the rack state.
i work on configuration since 1 month, i hope it’s finish.
I love this software.

Thank you.

Glad I could help!

Just keep in mind my advice from above - to some extent you are working against Cantabile’s core paradigm; this will limit your experience somewhat. But there is no “right” or “wrong” way to use Cantabile - if your setup gets the job done, then go for it…



Hello Torsten,

I understand, I will try like that.

5 racks sound
1 special rack sound (with uncheck option rack, “let the parent song control…”)

1 song = sounds for the above Keyboard
1 state rack special rack = sounds for the below keyboard (I use only 10 sounds)

Above Keyboard control the song
Below Keybord control the song and the state rack

A volume slider for the Above Keyboard
A volume slider for the Below Keyboard