Hey Dennis,
yes, Cantabile does recognize bank commands - you’ll need to have the right binding in place: “Input port - - Program Change (Banked) --> Set List - Load Song by Program (Instant)” should do the trick. I assume you have this in place.
The one thing I noticed that is probably your problem: you are sending Controller 0 - which means bank select MSB, i.e. by sending a value of 1 on CC 0, you are addressing bank 128, not bank 1. So a program change of 55 after this would mean that you are trying to select program 16439 (equalling 1.0.55 in MSB.LSB notation equalling 128.55 in simplified Cantabile notation).
If you want to select progam 55 in your second bank (bank 1), you’ll need to send CC 32 with a value of 1 and leave CC 0 at its initial value of 0.
You can also get Cantabile back to receiving program changes without restarting by simply sending it cc0 with a value of 0…
In short: use CC 32 instead of CC 0.
To unravel the mystery behind this for the un-initiated:
Normal MIDI values can only address a range of 0…127 - this is due to the fact that MIDI values use only 7 bits (the 8th bit of every MIDI byte is reserved to identify commands like “note on”). So only 128 notes, 127 velocities (plus “zero”), etc …
To allow for a broader range of values than just 0…127, the MIDI standard splits up some values in pairs of MSB (most significant bits) and LSB (least significant bits) - this means 14 bits or values 0…16.383. To get the total value, simply multiply MSB with 128, thenn add LSB (easier for us humans than shifting MSB 7 bits to the left )
This allows more fine-grained control of some values. These values are sent via two CC commands, normally sending the MSB value first (rough value setting), then the LSB value for the fine-tuning. But of course, as long as the MSB doesn’t change, sending LSB only for small adjustments works as well.
Typical pairs of such controls are
- Modulation MSB (CC1) / LSB (CC33)
- Volume MSB (CC7) / LSB (CC39)
- Expression MSB (CC11) / LSB (CC 43)
- Bank Select MSB (CC 0) / LSB (CC32)
Notice something? LSB CC # is always MSB + 32
Now we normally don’t worry about this, since we mostly just use the MSB part of our volume, expression or modulation commands - which covers (almost) the full range of its values and as such is good enough if you can live with 128 “steps” in your volume, expression or modulation controls and don’t need more fine-grained control. Actually, I’m not aware of many synths, master keyboards or VST instruments that actually use the LSB values of volume, expression or modulation - but Cantabile can deal with them in its bindings (see "Controller (Fine)) and in its MIDI filters (Controller-Coarse vs. Controller-Fine).
So using only the MSB part is actually a reasonable way to deal with volume, expression, etc - but it’s unfortunately not the right way for addressing banks, since by using MSB only, you are jumping through your banks in 128 bank leaps…
So this is why for bank select commands, you need to use the LSB value (i.e. CC 32) - you’ll only need to use CC 0 when you want to address banks above # 127 (which means more than 16.384 entries in your setlist).
End of lecture
Cheers,
Torsten