Rack states by index binding issue

Hi guys,

I’m not sure if this is expected behaviour but I’m confused as to how to make it work if it is…

When I put a binding in a song to select a rack state by index when something happens, I get this:

and it’s obvious to me how to select the states by index.

However, when I create this binding in a rack (it doesn’t seem to matter whether it’s linked or imbedded), I get this:

I’m not sure what to do with the Off/On values.

Anyone know why the difference and how I deal with it?

Just for completeness, I’ll describe what I’m trying to do (and maybe someone who’s cleverer than me can let me know how to do it right…).

I’m setting up a ‘General Gigs’ song for those gigs where there’s no set list of songs and I just want a 2 keyboard setup with a set of generic sounds on both, with bindings to switch layers on and off, that sort of thing.
The way I’ve worked it out, I have racks for categories of sounds. EG for the bottom keyboard, Piano, Rhodes, Clav, Organ.
These racks have states in them for different sub sounds or layers. For example, adding a strings or pad layer to the piano, different effects on the Rhodes or Clav etc.
I’ve got it all working fine, with the pads on both my keyboards selecting the categories of sound and the other buttons selecting the layers/sub categories.
This all works great, but in it’s first incarnation, this song gives me absolutely no visual feed back as to which category and sub sound is selected at any one time. This makes my old brain hurt as in the heat of a gig, it’s difficult to remember which sound is selected.

So, I, like many others have been on a mission to work out how to turn lights on and off on my 2 keyboards (Keylab MKII and MPK261). I’ve done that and have created racks for pads and button lights and can create all sorts of colours with all of them.

So, at song level, I have 2 racks. One for the upper keyboard and one for the lower. These contain embedded racks for the Categories of sound and the bindings (and racks) for controlling the pad lights. The Category racks contain all the synths and racks for the sub category sounds and I’m planning on putting the bindings for the button lights in those.

I’m hoping this makes sense to someone, it was meant to be a short explanation of why I’m trying to select states by index within racks… (I can post pics of the various bindings and racks if anyone wants)

Phew! Sorry for the epic post…


1 Like

On is what you want it to do when the transport is running (where you type the index number you want to go to) In your case it looks like while the click track is running you want to go to a certain indexed state number. That would be the On number

However Off is you want it to do when it’s not running so you tell it a previous state or arbitrary landing spot by putting that indexed state number in the OFF box.

so you need to have a plan for both situations, it’s a toggle type switch and the nature of the source creates the target choice.

Hi @dave_dore.

Thanks for the reply. I don’t want anything to do with whether the transport is running or not, what I don’t understand is the difference between the song level binding and the rack binding… If the target is a rack state index why is the value box different in both cases?

Yours, confused.


No, I’m the confused one, my apologies. I misunderstood your binding, it is a rack for the source “Orch Rack” that is what determines the state that is selected.

By it’s nature this choice is a conditional binding meaning that when you say “is running” that means that Cantabile needs to test to see if that condition is True. In all binary conditional situations there is always an opposite or False. In the case of this Cantabile question “is suspended” or is the other condition. That is why the binding presents only that choice box to you when you ask it to do a task based on a binary question. So in practical terms set the On value box to the value you want when the rack is running and set the off box to the state you want it to be when the rack is suspended.

Again sorry for the confusion on my part :slightly_smiling_face:

Thanks again Dave!

I understand the whole, test for something to be true or false bit, but I’m still a little unsure as to how to select a certain state in the ‘Button lights’ track when that condition is true…

Let me tell you what I want the binding to do and maybe that’ll clarify…

I have a button bound so it turns a midi route on and off. I want a binding that turns the light on and off with the route. I’ve got a rack for each light with states for different colours and off… Am I going about this completely the wrong way?

Cheers again, really appreciate the help.


Thanks Pierce, if you could, could you post a pic of the the route that gets muted and the relative light you want to turn on and off and I’ll think on it

in the mean time if I am thinking right the light and the route are on the same rack so here is what I would do with the bindings to have them work together.

The bindings would look like this for this to work so that route enabled is the green rack light and disabled is orange. The first binding does the route mute/unmute and the second syncs the rack light

a button press = on

next button press = off


When you’ve got it sorted out it an overview of how you set this up would be very interesting.

Ok… Deep breath, here goes!

This is the top level of my song (ignore the pads off rack, I’ve moved those bindings coz they were doing weird stuff…)

This is the routing window for the Main Keyboard, the pad buttons change the routes to the different racks and as shown in the bindings window below, the bindings change the states of the lights using the Pad lights rack states. Perfect, all working as intended. Just a note, these lights do not need to toggle on and off for each selected state, the states are exclusive (I don’t need the piano rack on at the same time as the Clav rack for example), so there’s a distinct state for each sound category selected and the pad light goes green to show me which one is on.

(The note on and off bindings mean that the bindings fire for both, I’ve got the pads on the Keylab set to latch, I can’t remember why now but it just works better…) As you can see, the binding in the Pad lights selection just selects the state of the Pad lights rack (down below) and all is fine and dandy.

Just for completeness, here are the pad rack routing and bindings windows.

These pad lights bindings are largely irrelevant to this issue, they just set the state of all the pad lights when the song loads (like I said, I moved all the ‘Pads off’ bindings into here…)

Ok, now we come to the bit that I can’t understand…

This is the routing for the Piano Rack:

As you can see, I’ve got a Kontakt instance for the strings layer and a Hybrid for the pad layer. The channel buttons toggle the MIDI routes to these on and off, perfectly. The Channel Light 1 rack sends the sysex to the button and if I select the states in this rack, it works perfectly to turn the lights to whatever colour I need…

The bindings for this rack are shown below:

So this is where it all falls apart… The bindings to select the routes work great. The bottom binding fires when the ‘Stgs’ route is enabled. So far, so good (So I think I’ve got the ‘Source’ part of the binding right). However, when I select the Channel Light 1 rack ‘Select state by index’ target, exactly as I have for the Pad Lights rack, it gives me this ‘On and Off’ values box, rather than a simple number box like it does when I’ve done it in the Main Board bindings to change the colours of the lights on the pads…

That’s about the size of it and for anyone who’s taken the time to read these ramblings, I’m most appreciative.

So, over to the geniuses (genii?) in the group…

Cheers as always and many thanks for your help so far @dave_dore


Sorry, just realised in the Piano rack bindings, I’ve selected ‘Select State by Program’ not by ‘Index’ but the value field is the same whichever I choose…



Oh, and also, the reason I want to be able to bind the state of the MIDI route rather than a rack state is that these bindings need to be unconnected, ie I want to be able to turn the strings route on and off independantly of the pad route. That means that it’s not possible to use states inside the piano rack to achieve this (well I could but then I’d need 4 states to have all possible combinations and I have an Orchestra layers rack in the Upper Board which has 8 layers that I need to toggle on and off independently…)

Cheers, I’ll go away now… :wink:


Whew, I’m glad I had a few coffees, that was a mind exerciser to be sure. Thank you for the detail Pierce, without it I would not have understood completely what the problem was. Also it is an interesting custom approach to your unique system needs! Anyway, after reading and hopefully getting what you are after it looks like the reason it breaks down is because you don’t want to toggle as you said so when faced with this you can use this trick to make it give only one choice when you are using a conditional source as in this case. It involves using Triggers. They work great but you have to keep track of the trigger numbers you use because they are global and work on all songs in the current Cantabile session. There are 128 available numbers so for this example I show Trigger #0 as the trigger I isolated for this task. The bindings act as a pair to achieve the desired single choice and remove the conditional nature of the original source. Here goes the Example

TEST rack Enable/Disable is the source for the trigger bindings, it only matters when it is Enabled and when disabled it is ignored by these bindings I will show. TARGET is the rack whose rack state I want to change. It is red on state 0

Here are the bindings I would use to remove the conditional nature of the source in this case. Since this TEST produces the conditional source I use a Trigger binding to set it to ‘on’ only and then set the trigger sources from that Trigger to handle the single PG or Index number change I want to send. I used PG change in the example but it also be index # if you wanted.

When triggered it changes the TARGET rack to rack state 1 and ignores anything else

Hope this works for you. It does on my simple test song but your configuration is going to need to be checked with it to see if it does the job.



Thanks @dave_dore once again for your magnificent help! I will look into triggers at some point to see if they can do what I want…

I did actually work it out in the end, and as is always the case, it was me not understanding rather than anything that Cantabile was doing. I had the bindings right but was misunderstanding what the on/off figures meant. I was trying random numbers in the on/off box and having no luck… If I actually put the index or program numbers in, it works! So, this is the bindings I ended up with in the piano rack…

Apologies for making you work so hard @dave_dore, when it was just me being stupid in the first place…

For @Tom_Tollenaere and @dsteinschneider who may be interested, I had to set 80ms delays in the lights racks for both pads and channel buttons in order to overide what the Keylab was trying to do with the buttons and set all the buttons in the MIDI editor to be toggled. This meant that I had to make bindings for note ons and offs for the pads. Thinking about it, I could probably just have had them send controllers or program change messages rather than notes, but there you go…

Anyhow, I’ve got it all sorted now, just got to finish this with the Keylab, then I get to do it all again with my MPK261… :exploding_head:

Cheers again for all the help @dave_dore, I’ll try it with your method next time…


Extremely pleased you got it fixed Pierce, I was wondering if there were concrete entries for that type of value box so this is a much more elegant solution IMO. Great work!




I have one more little problem…

I can’t remember how I set up these names in the binding sources/targets list:

They’re not the names of the plugins, or states or MIDI routes, but they control or read the state of the MIDI route… How did I do that? :rofl:



From the look of it there is a Strings reference some where in the routings pane of that rack. When muting output routes you have to make your own names for the bindings to the Enable / Disable icon on the route that are not visible except in the bindings pane when you use them as a source or target. To check that I would go to the Strings rack (I guess) and open it’s output route and right click on the enable / disable on the route to expose the binding. It won’t show the name but the binding relationship will still be there to figure it out.


binding with name not shown on route page that I named & created and that is bound to the output route of the TARGET rack.

right click on route from known source rack (TARGET in this example) to show the binding and it will point back to the source helping to see the connection.

I hope this explains it …



Great you got your stuff worked out. I’m surprised at your need for 80 msec delays - I’ll store that in my long term memory in case I ever need something similar.

I’m still having a few issues with the keylab lights not quite behaving… I’ll have to dig into your rack, see if there’s anything you’ve done differently. It would be nice if you could tell the keylab not to do anything with the lights. I put the delay in because you have to choose a colour in the midi editor and that flashes up when you hit the button…



That’s it!

Cheers Dave!


1 Like