Switching instruments via slider or modwheel

Tags: #<Tag:0x00007f97845a0370> #<Tag:0x00007f97845a02a8>

Hi everyone,

I’m trying to switch instruments using a slider on my controller rather than buttons. I’ve been able to do this in Ableton Live using what they call a chain selector.

I have on instance of Kontakt setup with 3 solo instruments, say, violin, flute, and horn all on separate channels within the Kontakt plugin. I have 1 omni midi signal going into the plugin, but routed as follows:

omni --> 1 (violin)
omni --> 2 (flute)
omni --> 3 (horn)

I want to toggle through each instrument using CC9 on my controller, such that value 0 turns OFF all instruments (sending no signal to Kontakt), and such that values 1 through 50 trigger violin, values 51 to 100 trigger flute, and values 101 to 127 trigger horn.

I’ve spent 3 days trying to figure this out. But I’m a new user, and so there is probably an easy way to do this.

I’m trying out Cantabile before buying it. I had been using Ableton, and I have successfully replicated my whole Ableton keyboard setup on Cantabile, except for this last thing. If I can figure out how to switch between loaded instruments in a plugin via a slider, I’m taking the plunge into Cantabile for good.

(Also, I’m trying to avoid using song states, or using keyswitches. I really just want to use the slider to change the channel within the plugin that the midi signal is being routed to).

For heaven’s sake, why avoid song states???

Somebody may be along who knows how to get ranges of a CC to trigger or enable/disable patches soon.


I know! I know!

Sounds silly, I admit! But trying to create a linked rack that I can use across all songs— a rack that contains my staple patches and parameters. That way, whenever I create a new song, I can drop that rack in and have a solid place to start from. From there, I’d create states specific to that song.

I’m new to this, so it’s possible that what I’m saying doesn’t make sense, LOL!

I have been accomplishing that by using a “base” song that I load and make a copy of using “Save Song As” to make changes. That way I can have several core racks in place that are focused upon the individual instruments rather than a set of instruments as you are proposing to do.

Also, keep in mind that there are two ways of including racks - as files where an edit to one location where it is used updates all other uses of that rack elsewhere, or as embedded racks, where you then can make unique changes to the rack within that song without changing instances elsewhere, the changes being saved within the song file itself.

Anyway, I’ll be interested to see what others suggest as solutions to the CC range-trigger idea!



Hi Cordaro and Welcome!

Terry is right about it taking a bit of trickery to pull this request off in Cantabile and it would require states either at the song level or in a rack. But IMO it can be done so I came up with this scheme that does the job but you will see it requires a few components and steps to create.

To start with the controller I chose for the example is CC11 but can be whatever CC number you want.

So create a route in the song and right click on the route source and chose MIDI filters. Then click Add and select the “Controller Map” filter. Then set it according to the example below. This filter turns your CC#11 slider to a program switcher with values 0 thru 3. If you want a different CC number you would replace CC 11 with your preference. Take care to fill it out correctly. That finishes this step.

Next I would add an embedded rack and name it “Kontakt MIDI Router”. Next set the target of the filtered input route that we first made to point to this rack and also create a MIDI out route from the rack to your Kontakt plugin. (I use the Cheesmachine for an example because no Kontakt here)

Double click on the rack you made and it will open for editing. On the left panel get your states panel open and add 3 states to it with what ever names you want ( probably violin for state 1, flute for state 2 and horn for state 3) I used 1, 2 and 3 for the example.


Select state 1, Add the route shown below and open the Control panel for the route you made and set the target channel to 1.

Select state 2 and open the control panel and set the target to channel 2

Select State 3 and open the control pane l again and set the target to channel 3

That completes the route assignments for each state and leads to the last step which is to make a binding inside this rack that changes the states from the slider controller. Select the Bindings tab and add a binding like this one. It’s function is to take the filtered output we made earlier in step 1 and use it to change the states when you move the slider.

I have checked this solution and it works here but is a complex set of moves so you might need to read some extra things from the online manual if you don’t understand some of this.

Terry would probably add that you can do almost anything with this tool but sometimes it can get a bit complex to get there!!

Hope this helps :grinning:



This is PERFECT! Thank you so much. And thank you Terry for the tip as well.

I tried out what you suggested and it’s working smoothly. There were some initial kinks, but I think it’s because I didn’t start from scratch but tried to build it into what I was already working on. I had some redundant bindings, etc.

I’m sure there’s some other sloppy stuff I got going on in the patch and song I set up, but I think I’m sold on Cantabile. With more practice, I’m sure it’ll all get cleaned up.


In one song, I am switching states that contain different VB3 organ presets via the Scene Switches on my Montage. The switches transmit a single CC, with different ranges for each switch (128/81 = Scene 1, 128/82 = Scene 2, etc.).

I have those feeding into a Rack which looks at those ranges and produce binding outputs, which I can use to switch scenes. It all works quite well.


You could actually do this without states by fiddling with a combination of multiple routes and route conditions. Look here:

Unfortunately, a route can only have ranges below a value or above a value, so to have the four zones you describe above, you’ll have to do a bit of convoluted routing through dummy embedded racks. These racks only serve to split one MIDI route into two output routes; internally, they simply connect Rack MIDI in to Rack MIDI out.

This should do exactly what you want: at CC9=0, no sound, at other CC9 values, it will send MIDI to the different plugins (you can also send to the same plugin at different MIDI channels, of course).

You’d probably want to embed this in a rack so this mess isn’t shown at song level…