Program Change / data increment

Hello everyone, I’m trying to bind two CC buttons (CC90 and CC91) to send PC increments (+1 and -1) but I can’t for the life of me find a filter or binding to remap CC to data increment.

I come from Gig Performer and that is very straightforward to set up:


CC90 is set to Signed 1 bit (-1) and CC91 to Signed 2 bit (+1) and both buttons are set to send PC (no SysEx or anything fancy). My goal is to navigate through my VST and external hardware patches. Is this possible in Cantabile Performer?

Thank you in advance!

Hi Tsunami.Warning & Welcome to the Forum!

To do that in Cantabile use the route filter by clicking on the filter icon on your MIDI route

Then add this “Controller to Program Map” filter to set up your inc/dec PG messages from your controller buttons.

SnapShot 5532

I hope this is what you needed. :slight_smile:



1 Like

Thank you so much for your help and warm welcome, Dave. I can’t believe how simple this is in Cantabile, it worked almost perfectly right out of the gate. The only issue is that it’s not remembering the selected program when I change states. Example:

  • I’m in State #1, trying different sounds in Synth1, and I’m happy with Program #15
  • I then switch to State #2, mess around and switch back to State #1 to try something else, but as soon as I press the previous/next buttons, Program #15 jumps to the beginning of the bank, instead of continuing from where I left, Program #15.

Any ideas? By the way, I’m using a Korg Nanokontrol2, its buttons can send control changes with on and off values. The filter only works as is if I set Off Value ≤63 and On Value ≥64.

Hi Tsunami.Warning,

The Route filters used in this case are not that sophisticated and do not persist across state changes. I will post a flag here for @brad, the developer to see if it could be addressed. If I can think of a way to hack it I’ll let you know …


Hi Dave, thank you for confirming it. The “Controller to Program Map” filter is great, perhaps it could have the option to behave like an endless encoder, similar to what GP does? Here’s a video for Brad to better illustrate the case:

Thanks again for brainstorming this one with me, I’ve been trying all sorts of bindings without luck.

I figured out what to do, you can use Cantabile Presets (located at the top of the VST GUI window) instead of the PG changes direct to the VST. Since Synth 1 transfers its’ presets to Cantabiles preset management this is easy to do and it holds up across states. Delete the filter on the route and add these 2 bindings to the song to control the preset inc/dec. It should do it.

1 Like

Thanks Dave, that’s what I was doing, which is a great feature but sadly won’t work with external hardware. At least I couldn’t find a way to add external gear as an Object, in order to have the Snapshot option available.

Ok, I thought it was just Synth One in question and not outboard synth. Yep, that’s a different fish. Does your outboard gear send a Pg change number when the program is selected from the outboard gear? In your use case it seems to me that some feedback from the gear is needed by Cantabile to have a pointer to know where to go from. Anyway, food for thought.

For outboard control of hardware I built racks to manage the presets on them. That would be a way to go as well. What hardware do you have?

Hi Dave, I have a bunch of outboard gear (synths and FX, old and new) but not all of them send a PG change number, unfortunately, but they all respond to this simple Program Up/Down message, as long as I find a way to tell Cantabile to transform a controller into an encoder, similar to what Brad did here, but having Program Changes as a Target, instead of Master Levels. It would truly simplify my workflow while auditioning patches.

I did, however, find a funny workaround for Next program that will persist across state changes:

Just set Toggle as 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127 :joy:

Hi Tsunami.Warning,

I have used that sequenced number thing too for a few things and wished that it could go both up and down too. :laughing:

Considering your outboard gear doesn’t all support PG change out I came up with this somewhat convoluted idea.

First you establish a way for Cantabile to have a memory of what the last used PG number sent was. Next you use 2’s compliment type bindings to change that memory and last you make a way to transmit the saved PG value on state changes.

To put all this together you add an embedded rack (I renamed the rack OUTBOARD#1 PG Chg to mark it well). You would use it’s Output Gain Slider to be the PG# memory. You would want the Output Gain states behavior checked for the rack as well.

inside the rack you would add this binding to convert the Gain Slider to a MIDI value. It will be used in the next part of your setup. The CC89 was an arbitrary choice and could be whatever you want.

Now you add these 3 bindings at the Song level. The first 2 are set up with Relative values that I will show below.

On the first binding for (CC#91) it is set to relative Mode 1 (2’s compliment) with 100% scaling. It handles incrementing the Gain Slider value on the embedded rack.


The second ( CC#90) binding value is like the first’s but it is set to -100% and is used as the decrement control for the same rack slider.


The last binding receives the value generated by the rack binding that was made earlier and converts it from CC89 value to a PG change with the same value and sends it to the gear.

I tested it and it works across states and recalls your last used preset PC and sends it on song load and state changes. The Slider acts as the PG CHG selector for you outboard gear via Cantabile.

I hope it works for you and solves your quest …



Dave, you are a legend! That absolutely did the trick, thank you for taking the time to figure it out and writing it all down here. I’m marveled by Cantabile’s modularity, there’s not much you can NOT do with a little creativity. In this particular case, I love having the visual feedback of the rack slider and how easy is to recall any patch from my external gear. This will open a lot of doors for me. Seriously, can’t thank you enough, buddy. Cheers!


Hi Tsunami.Warning,

I posted a rack in the shared area that has all the function we worked up here but adds bank changes and some rack buttons for inc/dec so i just wanted you to know.


1 Like