Template for keybd. split /controllers / macro help request

Tags: #<Tag:0x00007f97738a21b0> #<Tag:0x00007f97738a20c0>

Still slowly learning the C3 protocol to see if it can fit my needs. I’d like to get the best example of using Song or Racks to do the following 2 scenarios:

1-single 88 key setup for general use:

Split the keyboard w/ foot expression control: pno on both lower and upper range; and then control pedal( expression) fades out pno in upper range quickly and fades in synth/strings rack gradually so there is a null point of silence. I’d like to avoid having to load the pno vst twice for this.

To change presets on upper rack: Is it possible to use a key combination (hold down lowest key (like a 'function" key) and then press adjacent keys to change presets up or down (would this be states?). Would this have to be the highest keys?

Can C3 'learn" a key combination like that? The reason I want this is so I don’t inadvertently change a preset when I might play low on the keyboard.

Do these MIDI routing filters have to be in the song mode or part of a rack state?

2- double keyboard setup: Using Midi Merge box, upper keyboard trans. on ch 2. Use the same above synth/string rack, but with different transpose to be normal octave. Use same preset changing key combination. Is this just a different song state with the same racks?

Hi Gregg,

Quick answer for now, I can explain more in detail later if necessary.

The basic setup of split keyboard with top half fading to a string synth is probably easiest done as:

  1. MIDI route for the lower keyboard range to the piano
  2. MIDI route for the upper keyboard range to the piano (with transpose if you need it)
  3. MIDI route for the upper keyboard range to the string sync (again transpose if you want)
  4. Binding from expression pedal with CC val 0->64 mapped to 0 to -oo dB gain on the piano
  5. Binding from expression pedal with CC val 64-127 mapped to -oo to 0dB gain on the string synth

(In 4 and 5 you can adjust the cross over to suit as described it’ll go silent in the middle)

Combination notes aren’t really supported (would be interested to hear if anyone else might find this useful)

You could set all this up either in the rack or in the song - it depends whether it’s specific to the song or whether you want to use this setup across multiple songs but probably more easily done in the rack

For the double keyboard setup the easiest way might have a separate set of routes (like those described above) and just enable/disable the appropriate set using a rack state.

Having said all that there’s another way to do it too… you could setup the rack such that it expects the two keyboard ranges on two MIDI channels (ch1 and 2 like you describe) and then use filters on the MIDI input ports to split one keyboard into the two different ranges/channels for the single keyboard case.

Then you could just use two different Cantabile configurations (one for single keyboard setup, one for the double) and your song should work in both.

Let me know if you’d like me to explain any of this in more detail.

1 Like

Excellent and helpful explanation for me as well. Thanks for asking this, Gregg!


ive been spending a lot of time on the first method and it seems I have to do double or triple work to save plugin programs ,then into banks, and then rack states, then song states…

the second method is more interesting as a template maybe, can you explain the second method in more detail if it simplifies?

Here is my initial “patch list” that I need relatively quick access to:
Sp Ep/str1
Sp Ep/warm pad
Sp Ep Org 1
" “,2
” " 3
Sp EP/brass
" " 2, 3
Sp EP/bells

Then, same with Acoustic PNO"
Sp PNO/str
Sp PNO/warm pad

Here’s another one that is stumping me, and you maybe have a better way to assign the exp. pedal to control the split crossfades using MIDI EXPRESSION, not the plugin audio volume. That way the efx on the strings should ring out better…

Also: time consuming…Since some keybds I come across don’t have an expression pedal input and some do, I have an Anatek Pocket Pedal that takes my Yamaha FC-7 pedal in and only sends volume cc#7 ( not expression #11) thru the MIDI from my generic keyboard, like a CAsio PX-150…so I had to set up a MIDI filter to remap cc#7 to #11( expression)…and then to get the bindings right for each possibility, I had to copy each binding and reset the copy to act on both cc11 and CC7. Sometmes it doesn’t work right and the gain always jumps to 0…Do I have to supress cc7 if it is remapped to 11?

So now the rack state has a long list of bindings covering each state’s vsti’s controller bindings…many are inactive for that particular state . Do they all have to stay in the list for all states of a rack?

Also, now in each rack state’s input port list is very long, because each state has a lot of vst’s inputs muted if they are not being used ( I use mainly Kontakt, Lounge Lizard-twice, UVI piano-twice and Omnisphere at least twice for different channel multis). How to deal with all that?

This is seeming pretty complex, and easy for these bindings to get messed up.

Would maybe a background rack would work for this???

I’m not quite getting it… I’m wishing it would be Handling the mapping and bindings in the background and just being able to view the inputs as UPPER and LOWER with the same crossfade controlled by “either cc11 or cc7”??..then drop to the plugin and name that “patch/state” once.

CAn I also do the crossfade without opening 2 instances of the plugin? Like create a cc11 control route for the upper key range only , then make another filter to drastically lower the velocity on the upper range of notes…??..

Hi Gregg,

I’ve just been playing with this trying to work out an easy way to do this by scaling the MIDI velocity rather than the gain. Unfortunately Cantabile doesn’t really have a way to dynamically adjust MIDI velocity by CC - ie: MIDI expression.

So I tried with a MIDI plugin and got something that works, but it’s a bit messy. See the attached song file. You’ll need the Insert Piz MIDI Plugins and for this particular example, the mda Piano and mda JX 10 plugins.

MidiExpression.cantabileSong (20.1 KB)

The basic idea is to create the appropriate splits and send the top half through two Velocity Scale plugins and use CC 11 to control the scale via a binding. If you look on the bindings tab you see two bindings - one to each velocity scale plugin and if you click the options column on the second one you’ll see the source range is reversed to provide the cross over.

Also, unfortunately the velocity scale plugin wont scale right down to zero so to ensure silence when fully expression pedal in one direction I put a velocity curve filter on each plugin to slide a velocity of 1 down to 0.

So that works, but it got me thinking a “MIDI Expression” filter would be handy for this. ie: use any CC to scale the velocity of notes being passed through. Then you could ditch the two velocity scale plugins and the whole thing would be cleaner.

Not sure I understand why you need two sets of bindings if you’ve mapped cc7 to 11?

Not sure I understand everything going on here - perhaps a screen shot to show what you’re doing? Don’t forget you can change the target of a route between different states - this is often easier than creating multiple routes and disabling some in some states.

Possibly, yes. Certainly not a high priority. I’m thinking of becoming a bit more portable and carrying my whole rig in a rucksack! That means using a keyboard like the CME Xkey. Being able to swap states by using a weird key combination would be handy. (And not just notes, but any button on the controller)

Actually: by assigning one button as a “shift” key it would be possible to double the amount of contolls on the controller. Hmmm… Nice!

thanks so much for trying to help, Meanwhile, I’ve come upon a good pair of MIDI routes in rack edit of PNO RACK that control the split of the same pno plugin:-

Route 1: Lower range is just a note range sent to pno plugin - up to E5.

Route 2: Upper range of same pno plugin ( F5 and above): Condition, only route when cc11 is less than 5.

Then the Upper String rack has a Route Condition set so than it responds to MIDI in when cc11 is greater than 8.

that should work…it did last night , but this morning it didn’t. It seemed reversed…

What do you think?