Program Change over 128

Is it possible to switch programs/songs over 128 via program change (bank select)?


Hi Steffen,

Yes it’s possible. Well it would be if it worked - just noticed a bug with it and I’ve decided to re-work the way program numbers are handled internally. I’ll probably do that today and get it into the next build.

I’ll post more details here soon.



OK, build 3097 is available now and this should work correctly now.

Cantabile uses a dotted number format for banked programs. So 190.23 would be bank 190 and program 23. (Note that program numbers are one-based, but bank numbers are zero-based). You can also enter bank numbers as msb.lsb.prog, but Cantabile always displays banked program numbers as bank.prog.

So all you need to do is setup the states or set list entries with banked program numbers, eg:

and then create an assignment like this:

1 Like


Are you saying we do not need to use triggers tied to song states (and perhaps rack states) but merely need to name the state with the bank and patch number as you show above?

I finally figured out what “bank number” I need to put in there for my “D” bank in the Kawai K5000s - it is 13056.patch#

Took a bit of hexadecimal-to-decimal tinkering to divulge that figure! (That is MSB=h66.LSB=0.Patch#, or in Cantabile, d102.0.patch#). How that digit of 13056 is derived I have no idea (is it some 14-bit conversion or something???), but it works!


Probably - depends exactly on what you’re trying to map to what.

The MSB and LSB are each 7 bits so when combined give:

(66h << 7 + 00) = 3300h = 13056d

1 Like

Hi Terry

if you want to send program changes to external devices or to plugins, you will still need to use triggers tied to song states.

But if you want to call up song states via program changes from your master keyboard, you can do what @brad outlined above.

Two different scenarios around program changes.

How to get from MSB/LSB to 13056 when you’re not a programmer and less used to shifting left and right :wink: :

  • convert your MSB to decimal (hex 66 → decimal 102)
  • multiply by 128 (the lower 7 bits (LSB) address the final 0-127) → 102 * 128 = 13056
  • add the LSB without any multiplication (in this case LSB = 0, so nothing to add)

→ done!!




All is clear to me now! :smile:
Thanks Brad and Torsten for explaining that.
I’ve been doing MIDI for years, but never got my head around that MSB/LSB stuff till now.


Hm, can somebody help me out?
I have preset 487 in Guitar Rig.
How can I switch between them?

Your best bet is to create a new ‘tag’ in Guitar Rig and drag any presets you want to use live in to that tag.
You’re essentially creating a custom bank of 128 presets, the names of which will appear in Cantabile.
GR doesn’t appear to respond to conventional bank change messages.
Here you see an example bank with the names appearing in Cantabile.


Wow! Thx so much for the help here !!! Much appreciated ! :slight_smile:

1 Like