Question for you guys who still use external slave hardware

Hey guys! I’ve brought this up with Brad, but wanted to know your opinion.

I use a Yamaha Motif Rack XS in multi-mode. I don’t really find Cantabile very user-friendly when setting up songs in my “non-plugin” setup. I have to keep my MIDI implementation documentation by my side and create program change bindings manually on every route, knowing the patch I want to use ahead of time. This makes it difficult to quickly audition different patches while setting up a song.

I brought up the idea of being able to create a hardware definition file where you could preset all of your patch names, MSB, LSB, etc. Similar to adding a soft synth plugin during song setup, it would be nice to be able to add external hardware as well, selecting that definition file. Then you would have bank/preset dropdowns that would be setting the program change binding without having to do so manually.

How do you guys handle your patch change bindings right now with external sound modules? Do you find working with them a bit tedious like I do?

Hi Jason,

I send program changes to my RD-800 using the same method as you and it’s a process for sure. It would be faster with a user definable drop-down selector list in the binding area for sure.


I have a Cantabile rack for every piece of external equipment I use, with bindings set up ready. So all I do is when I find a sound I need for a song on my external gear, I create a new rack state and dial in the right bank/program change for it - job done. I do this not only for the sounds I use in songs, but various other useful / standard sounds, and then whenever I need one of those sounds I just drop the rack in and select the sound I want via rack state.

I think if you could get the data for patch names, MSB/LSB and program number, it wouldn’t be too hard to write a little script in Python or similar, to generate all the corresponding rack states and bindings for you, so you’d have rack states automatically set up for every sound on your hardware. The question I’d ask is whether it’s really useful, or whether it’s more important to just have the sounds you really need set up in states.

Note that you might be able to set up your external gear to send bank and program changes over MIDI when you select patches on the front panel, which means you could then capture the numbers in Cantabile either via the MIDI Monitor, or potentially even with MIDI learn.



Excellent. Why didn’t I think of that? I quit using my Korg Trinity because it was too much trouble.

I was inspired by Neil’s post from a while ago on how to use a rack for external gear and have it set up this way for my D550 and DX27. It works well. I have a rack state for every sound in the memory and I just add the rack into the song, and select the state on the rack like a preset. It took a while, but once it was done it is always ready to go.

  • Paul
1 Like

My way is the same… For each real Instrument 1 Rack…

But is there an easy way or is it necessary to make one binding for any state?


Here’s one way you might find useful. Create a rack with a binding for each bank of your external hardware. In my example below, I’m going to suppose my external hardware has three banks of patches.

Add an embedded rack that basically does nothing other than provide a useful fader control, which we’re going to use to choose patches on the external hardware. I’ll call that embedded rack “Patch Selector”.

Each binding maps from Patch Selector OutputGain to send out a Banked Program Change to your external hardware. The first binding maps the Patch Selector fader range to banked program change 1.1 to 1.128 (bank 1, programs 1-128). The second maps to the banked program change 2.1 to 2.128 (bank 2, programs 1-128), and so on. Of course, if your hardware has more exotic bank numbers (as most do), use those instead of 1, 2, 3 here.

Set “Enabled” state behaviour on all of these bindings, and then create rack states for each of your banks. Enable just the first binding in rack state 1, second binding in rack state 2, and so on.

Finally, enable state behaviour for the Patch Selector rack’s Output Gain.

The result is that you have a rack where you can choose the bank you want using the rack state selector, and then dial in any of the patches in that bank by moving the “Patch Selector” gain slider inside the rack (this scenario is crying out for the “Custom rack controls” feature on the wishlist).

And since you’ve set state behaviour on the Patch Selector gain, once you find a bank/patch you like, just store it as a new rack state (in this case, named something appropriate to the sound, like “Rhodes” or whatever), and then whenever you choose the Rhodes rack state, it’ll send the correct bank and program change to your external gear, just like magic!

Like this, with only a few bindings and rack states, you can scan through thousands of patches on your external synth on demand from your rack very easily to audition sounds, then lock down specific patches you want to use in your songs into rack states.

To round off the rack, you can route the audio input from your external hardware to the rack stereo output, and route the rack’s MIDI in to the MIDI out to your external hardware. That way, any MIDI you route to the rack will go out to your synth, and your synth’s audio will emerge from the rack’s stereo output. So in the context of a song, your external hardware will behave identically to a synth plugin, including how you route to/from it, and how you control levels etc. Or if you don’t route your hardware synth’s audio back into Cantabile, you can skip this step.

Some pictures to help illustrate:

Move “Patch Selector” gain inside the rack to select a patch in the selected bank on your external device:

Bindings, one for each bank of your external hardware, with bank values set accordingly in the value box:


[After I first posted this I edited/extended it a bit, to use a “Patch Selector” control, instead of Input Gain]


Brilliant! The method is well explained. Thanks Neil.


Thank you Neil for your help.

maybe I will use this way in the Future to solve some problems …good Idea to Do it this way…

I also buildet Racks to delegate Routings and bindings to the Right Place for better overview…

I had some attempts to find the best and easyest way but sometimes easy is not comfortable enough… so i will see what’s the best

Thank you Neil

…i found a new way in the darkness :joy:
the best way for me…

Rack State >> Selected State Index >> (Action) ProgramChange

…works perfekt and so i can Chose exactly the numbered presets with only One new State and i can direktly the Name of the Patch in my States List

…next step Building a gain fader to select the states and so i can step all named presets in my rackstatelist

Expl.: voicelive> gain> Voicelive > Selected State Scaled (Full Range of States)

Love it :+1:t2::+1:t2: (good Idea with the slider, Neil)

1 Like

This is an awesome approach, Neil! I am going to try it today!

My older hardware synths really only shine when routed through effects. I’m never certain how to mix this approach with including effects, but perhaps adding effects directly into this rack and allowing them to change using states will work. (The method I’d tried in the past in creating an “effects rack” was really awful… perhaps I can apply this approach you use for patch changes and banks to my effects somehow.)


That’s exactly what I do - I choose one or more effects plugins that work well with the external synth, and then enable/route them on a rack-state basis. It works really well. Of course, it relies on you having enough audio inputs on your interface to handle your external synths separately. The only disadvantage is that you’re sending the audio through two buffers worth of latency (in and out), which may be noticeable. In my case, running at 192 samples, I can detect the latency, but it’s small and acceptable for those sounds, given the benefits I get from effects.


1 Like

Nice to use many racks for 1 real Hardwaredevice.
so all important Parameters i can see directly…
Slider Harmony on/off is for Volume Harmonylevel
other Sliders to choose a State (example: Preset)
not for my real Setup …only to Play for fun and test programfunctions

1 Like

Looks like this wishlist feature would be useful here…


1 Like

It would be nice to have User controll Panels.

…but the question is what’s realy Important on my Window ?

My way for playing is : all changes only with States … So i only need forward and back …that’s all …the Rest is only making musik

what i Need for Experiments and Building new Songs is the other Side but there i can use a Second and third Monitor with some Editors on it…

I agree, Juergen, I prefer to have everything pre-programmed into states too (although some like to tweak things live). However my original idea for the user controls suggestion was for racks to be able to have user-defined controls; racks currently have controls for rack state, output gain fader, pan etc. - this idea for for adding a few more controls (maybe on a extended 2nd line below the normal rack row), which you can bind to stuff inside the rack. So for example, having a reverb mix control on the rack “front panel”, without needing to go into the rack and tweak stuff. The idea was to hide complexity, and allow racks to be easier to re-use, rather than for use during performances necessarily.

It would be particularly useful for the stuff discussed in this thread, for controlling an external device - bank/patch selection being one example scenario. With plugins, if you want to tweak a control and store the result in a state, you would usually just open up the plugin, make your change, and the state will store the result. But external hardware’s state is independent of Cantabile, so you need to use bindings to control the external hardware, bound from some control that’s stored in Cantabile states. In my example above I made a binding from an embedded rack output gain fader, which is sort of mis-using the fader for something it wasn’t intended for. The idea for user control panels would be to allow user-defined controls that can store their behaviour in rack states, which you can then use for anything, including binding to external hardware.



Vok i understand but with the Workflow of my example you also can have more sliders to controll anything…

Other side is the concept… Like …you have for every song another keyboard

…it also makes it complicated

On Surface it is possible to work with an other Programm for touchcontroll
Like emulator or any other…

So you can swipe your Virtual Desktop with one gesture foreward and back or integrate both in One Window… So many possibilities


P.s. But i live in the Word of real Instruments and i don’t want more Experiments with Audio,vst,Crash,dropout,surprises :wink:
…and there are many Knobs and Faders available :grinning:

I tested some things to have a better workflow for optimizing my Songs…

Nice thing to use a Rack as a Switch, Button, slider…

Example… One Rack is only a Switch for my voicelive Harmony:

Harmony Off >>> Turms the Rack Off
Slider is for Harmony Level.

This works for.- and backward …also when i use the Knobs of Voicelive and Switch some things the result will be saved directly in my Songstate.

This is very nice for finetuning the levels.


New user here and this is my first post. Can you please explain in more detail or attach a sample rack file to show how to set up a hardware synth to react or respond like a plugin? I’m using a Roland XP-80 and local is set to off. I’m having trouble figuring out how and where to set up audio and MIDI ports. Is this all done on the options page or inside the rack? My ASIO interface has two inputs/two outputs and only the default MIDI/Audio ports are currently set up.

Thank you

1 Like

I’m not @Neil_Durant, but I’ve created a step-by-step approach to this in a previous post: Accessing an External Keyboard in C3

Take a look - hope this explains how to go about it.