How to direct a sustain pedal to multiple channels?

I am using a keyboard controller that has keys on multiple midi channels, and a synth (Surge XT) that allows multiple channels in a single instance of the synth (used for more than 128 midi notes). How can I direct the sustain pedal on and off messages to all midi channels simultaneously when playing (real-time). The sustain pedal sends CC 64 127 and CC 64 0 messages on channel 1, so only the notes on that midi channel are affedted by the pedal.

Hi,

Enable the Record at multiple tracks simultaneously, if you are using track per channel.

If not, you can use the Input Transformer to duplicate the Sustain MIDI CC to multiple MIDI Channels.

Thank you! I’m using one track and I tried making the MIDI Input Transform but I’m afraid I’m not quite sure how to do it. I’ve set the Filters to ‘Event type equals Control Change’ AND Midi Channel equals 1 AND Value 1 equals 64. Then in the Event Trannsform Actions, I have listed ’ Target Channel - Operation Set To Fixed value 1’, Channel Set to Fixed Value 2, Channel Set to Fixed Value 3, etc. (The sustain pedal should be sent to channels 1-5) Am I doing this right? It doesn’t seem to be working but perhaps this is a problem in the synth.

Unfortunately you cannot enter all the desired results in the Action field. You’d need to only enter one line of “Channel Set to Fixed Value x”. However, you have up to 4 different transformer modules, so that is enough for channels 2, 3, 4, and 5.

Oh, I see. Too bad there’s no ‘Any’ option in the MIDI channels assignment. OK, so 5 channels is not possible then. Thanks!

Errr… 1 channel from your input device and 4 channels through Cubase = 5 channels.

Well, you can complain about that to the creators of MIDI, every controller event must be assigned to a specific channel:
[MIDI - Wikipedia](MIDI History)

Seriously, you could load Surge as a Rack instrument and create 5 midi tracks for it. And then follow the tipp from Martin to record on all 5 tracks simultaneously.
Additionally: What exactly do you address on channel 4 and 5 in Surge XT? I found only support for channels 1, 2, and 3 - to address scene A or B or both together.

I can’t get the Input Transformer do this. Each module sends CC64 to a fixed MIDI channel, 2, 3, 4, and 5. But even if all the modules are open, only one of them works (the last one). It seems it’s not possible to direct messages from one MIDI channel to several channels simultaneously with the Input transformer. Unless I’m missing something? The screenshot shows my transformer settings. - I’ve never tried instrument racks in Cubase, but creating multiple instances (5 in this case) of the same VST with identical sounds is an awkward and processor-intensive way of working, and Surge is special in that it has a ‘Use MIDI channel for octave shift’ function for microtonal keyboards that have more keys (and notes) than 128.

How should the Input Transformer be set up to achieve this? I couldn’t do it.

Ok, didn’t know about this feature. I guess it requires a different approach altogether.

BTW - when I suggested to load the VSTi as a rack instrument it is enough to load one. Nobody suggests to load 5 instances.

So, I used Halion Sonic SE in my example as it was easier for me to see if this solution works. You just replace it by Surge XT.

grafik
Load one instance of your VSTi

Create a MIDI track, set to channel 1. In fact, when loading a rack instrument Cubase will prompt you whether it should create a MIDI track for you, click Yes.
grafik

Select the MIDI Track, in the Inspector unfold the section MIDI Sends and set up the first one like this:
grafik
Load MIDI Modifiers, chose midi port Surge XT, set the channel to 2. Setup a Note Filter where it says Range. This will filter any Note except the defined range. In my example I only let C-2 pass but you want to set the range to reflect the octave that you play on for midi channel 2.

Then do this for the remaining 3 MIDI Sends slots, alway adjusting the MIDI channel and the range of notes that ought not to be filtered.

Thank you! This looks like it could be the solution although so far I haven’t been able to do what you suggest because the Inspector does not let me edit the slots 2, 3 and 4 - only the first slot (see screenshot - I can’t open the editor for the second slot). I must be doing something wrong.
You probably got this but just to be clear - the situation is this: my keyboard has 280 keys divided into five zones, with 56 midi notes in each zone and each zone on a different MIDI channel (1,2,3,4, 5). Each channel is for one octave, so MIDI note 24 on channel 4 is the same pitch as midi note 24 on channel 3 but an octave higher. Surge (and also Modartt Pianoteq) has a function ‘Use MIDI channel for octave shift’ so it transposes the octave according to the MIDI channel of the note it receives (MIDI input channel in the Cubase track is set to Any). But the Sustain Pedal (CC 64) is only set to MIDI channel 1, and I am trying to direct it to all the five channels simultaneouldy whenever it is pressed.

You have to load the MIDI Modifiers also into the other sends:

Furthermore there should not be the need to use the same filter two times.
If you have 56 midi notes on each channel and they start on note 0 on each channel tha you can use the same filter range values on all 4 slots: minimum should be 0 and maximum should be 55.

NB: on your screenshot you have changed velocity compression and length compression. Not sure if you noticed that.

Thanks. I’m afraid i have no idea how to load the modifiers and get access to their settings. Not all of them have the Edit button. - The velocity/length compression was there by mistake.
But what is the idea here, why do I have to filter the notes?

I put the red arrows in the picture where you need to make a left click with your mouse. It is beyond my understanding why you were able to load the MIDI Modifiers into the first Send but don’t know how to do the same for Send 2, 3, and 4.

The idea with the Note Filters was to avoid that you play one note on your keyboard and all 5 channels play back the note simultaneously.
That is the tricky part about what you try to achieve - send a specific midi message to 5 channels (Sustain) but to keep other midi messages seperated (Notes).
However, I am not sure that my proposed solution will work in this way.

Thank you once again for your help and patience. The embarassing problem with loading the other modifiers had to do with my mac trackpad, I wasn’t making a left-click. Anyway, that setting does not work in Surge. What it does is that it sends the midi notes it gets from the channels of the keyboard to all, or several, channels in Surge so that when a key is pressed, not only that note is heard but also the same note in upper and lower octaves. Without the MIDI modifiers, Surge automatically plays a note it receives on, say, channel 3, on channel 3, when it’s in this multichannel tuning mode. - But thank you for helping, and teaching me to use the VST rack and the modifiers. As to Surge, I just asked the developers about the pedal problem, and as it happens, they are working on it and it will be fixed in the next update!

I think it should be possible to get this done without any fixes on Surge’s side.

I made a little project file for you:
Surge Sustain on five channels.cpr (239.0 KB)

Surge is loaded as a rack instrument (it can also be done as a track instrument but let’s stick with rack for the time being).
I created two tracks. The first will filter out controller 64 (sustain). The second will filter out anything but controller 64.
The first track is set to channel “any” allowing your notes to be played on different channels.
The second track is using the MIDI sends as above. The is still a note filter activated there (set to 127 for min and max), this is just in case.

The trick is now to have both tracks ‘active’, ie. both are either record-enabled or have the monitor icon on. I used the latter.

Try if it works.

It works! Thank you so much for this! Just to repeat and understand what’s going on - I can see that both tracks have Input Transformers, and, as you write, the CC64’s are filtered out in the first track and nothing else is done to the MIDI on that track - the keyboard sends notes on 5 channels and they’re received and passed on to the respecyive channels in the synth. The second track receives MIDI on channel 1 and everything but CC64 is filtered out, Then, with the MIDI modifiers, the CC64 messages are sent to MIDI channels 2, 3, 4, 5. with the four MIDI Modifiers. It is a little confusing to me why the CC64s on channel 1 get summed to the mix (as they indeed should) when the MIDI Modifiers send messages on ch, 1 to channels 2,3,4, and 5. Other than that, everything’s clear and I learned a lot from all your messages. And Surge now responds correctly to the pedal in my setup!
BUT - I now noticed something weird. In Surge, the MIDI Note 64, regardless what channel it’s sent from, is played on that channel PLUS on channel 1. SO if I play midi note 64 note on the keyboard’s channel 2, I hear that note plus the note an octave below (ch 1). It doesn’t seem coincidental that it’s #64 but there is nothing on the settings about MIDI Note 64, is there? - so this doesn’t make sense to me.

1 Like

Well, the Send effects send messages to channels 2, 3, 4, and 5. The track itself sends the messages on channel 1.

That is strange and I have no idea why it happens. It should have nothing to do with the filter filtering out CC#64. But you can easily check by temporarily change the filter to CC#65.

Otherwise you understood everything correctly and I’m glad to hear that you can now make good use of your setup.

Yep, if I change it to CC65 , MIDI notes 65 on channels 2, 3, 4 or 5 play simultaneously with channel 1. But I found it! The Boolean operator in the Input Transformer of the Sustain track must be OR instead of AND.

For an ‘all in cubase’ approach one of the easiest and most flexible methods is to simply use a lot of MIDI tracks.

  1. Make an initial MIDI track that filters ANYTHING coming into it that is not CC65.

I do it like this:
a. Create an empty MIDI track.

b. Assign a Track Input Transformer to it and then open the panel.

c. Build a filter that looks something like this. Its purpose is to ONLY allow CC65 to pass through the track’s input. All other events get blocked.

d. Duplicate this track 15 times (16 en total). (Note, I renamed the “MIDI 01” track to “Echo CC65” somewhere between screen shots)
image
(Lots of ways to do this track duplication thing. This one is just the easiest to grab a quick screen shot.)

e. Set the MIDI channels in sequence for the tracks from 1-16. I end up with something that looks like this…

f. Next I’ll click the first of my 16 echo tracks to ‘select it’, hold the shift key, and then click the last one. This selects them all! I’ll right click any of the selected tracks and choose “Move Selected Tracks to New Folder”.

Putting all these in a folder together makes it easy to arm/disarm it all in a single click. It also makes it easy to fold things down and free up screen real estate for other tracks. In the long run, you could even make quick macros that’ll hide/show this type of stuff with a few keystrokes…so it’s ‘out of the way’ visually until you need it.

I’ll give the folder a sensible name so it’s easy to find again (Invent a standard of your own that is consistent, so you can later take advantage of Project Logical Editor (PLE) macros and such to select things by ‘text patterns in the name field’.

g. Next, we’ll export a copy of this ‘folder’ and all the tracks in it so they can easily/quickly be ‘imported’ into future projects in a moment’s notice if I ever need to do this again.

Make sure the folder itself, AND all the tracks inside are ‘selected’, and do an export to a file-system location of your choice. I keep a lot of stuff like this in my default system’s ‘User Documents/Steinberg/Cubase’ folder.

h. Now we can put this group of tracks to work with anything in our instrument rack. It can work with Instrument or MIDI tracks.

For this example, I’m going to put an instance of Bidule in an instrument track real quick.

After setting up my Bidule track, I’ll select ALL of my Echo CC65 tracks again. I can connect them all to my Bidule track in one go if I hold ‘alt-shift’ while selecting the output here in the track inspector.
image

i. Now I’ll add a ‘track transformer’ to the Bidule Track that looks like this.


This transformer lets everything from the controller pass into the track BUT CC65 (Filters CC65).

I’ll group all this mess together in another folder. You can try different arrangements with this stuff, but I encourage you to use folders when things more or less ‘belong together’. They make life much easier!

All that’s left to do now is to ‘arm’ this stuff and I should be ready to test it now. Loving that I put all this in a folder together, because now I can arm it all in a single click from the parent most folder!
image

Does it work? I’ve assigned a pedal to send CC65, I’m stomping it, and holding it down, I see this…


No worries that the channel ‘order’ isn’t in sequence in this monitor (No idea why Cubase sent them in this order, but it’s not important). I checked it closely with other MIDI-Monitoring tools in Bidule and confirmed that it all comes in on the same MIDI tick.

Good so far! I let the pedal up, and I see this in Bidule’s MIDI monitor.

I play some other stuff on the keyboard to see what happens next, and as expected, it’s only passing through Channel 1. I’ll change the MIDI channel for my Bidule Instrument track to 2 and see what happens. As expected, CC65 echos to all 16 channels, but anything else (other than CC65) I play on my mkII only passes to Channel 2.

Naturally, you can tweak the various filters for each of the 16 channels, and your main Instrument or MIDI track to suit your needs.

i. Finally, all these new tracks make a big ole mess out of my mixing console! I don’t need to see all this mess…

Fortunately it can be hidden easily enough if I open the left pane in the Mixing console, and toggle that ECHO-CC65 folder off.

It can also be hidden in the Project Window…Independtly, or things can be ‘synced’ to hide/show with your Mixing console(s).
image

In time you’ll learn how powerful those PLEs can be. You can make sequences of macros that will make quick work of sorting and displaying exactly what you want to see/hide/disable/enable/etc, exactly when you want it with just a few key-strokes (or even a button from your favorite MIDI controller).

One of the ‘problems’ with the setup I’ve described above, is that whatever you record on the main Instrument or MIDI track will not have ANY CC65 events. You’ll need to record it across all 16 of your ‘echo tracks’ (could merge it all together into one track set to channel Any later if desired).

Another possible workaround involves setting up a virtual port, routing all that stuff through the same virtual port, then back into a special track to get a single ‘merged recording’.

So…

Now for the simplest way to do these sorts of things. It needs third party software. Personally I’d use something like Bidule or Bome MIDI Translator to do it before it hits Cubase.

I’ve already shown an instance of Bidule running inside Cubase as a ‘plugin’ earlier in this tutorial. Personally, I also use a stand-alone instance of Bidule and have it grab my controllers’ ports FIRST. It can do lots of magic to the data first (turn even the dumbest MIDI controllers into very smart ones), then it forwards it to a virtual port. I ask Cubase to ‘ignore’ my actual controller ports, and instead it listens to the virtual port versions of my controllers.

The first thing that runs on my PC when it boots is an instance of Bidule in Stand Alone mode that is dedicated to managing and routing my MIDI controllers (and a few other things).

Echoing a CC65 event over 16 channels from my Arturia KeyLab mkII in Bidule might look something like this (Where A is the virtual port that I have Cubase listen to for input from the mkII):


Data goes from the Keylab into a filter that routes CC65 into a 16 port splitter, sets the channels accordingly (1-16), merges them back together, and sends it out virtual port A. My DAW listening on port A can get that portamento pedal on all 16 channels straight away.

I could fan off endless ‘options’ and use as many virtual ports as I like to build all kinds of werid and fabulous controllers. They could all even talk to different individual tracks in different ways :wink:

That only begins to touch what all Bidule can do. One can also manipulate audio streams in similar ways. Host and chain plugins (VST/AU/AAX/CLAP). Bridge different plugin types together (I.E. VST2 plugin in a VST3 host, or vice verse). Set up OSC servers/clients. Make synths and samplers, and a whole lot more. It’s a major swiss army knife! Peek and snoop to monitor things in real time…super diagnostics tool. One of my favorite things to use it for is merging different plugins together into one ‘super plugin’. I.E. fashion a monster sound layering some stuff from Zynology, with stuff from HALion, and then some. Cubase ‘thinks’ it’s talking to a single instrument/plugin. Pretty fun stuff!

When it comes to chaining together effect plugins it opens up all sorts of creativity. Imagine being able to chain together 4 or five effect plugins in a way that some are ‘parallel’ some are ‘serial’, and not needing to take half a dozen ‘group tracks’ on the mixing console to make such a complicated routing scenario happen.

Virtual MIDI ports can also come in handy for routing MIDI among multiple apps on your computer. If you don’t already have some set up, do it today!

Inside Cubase itself, it’s great to be able to use a virtual port to send one Cubase track back into another (or several others). Having a good set of virtual ports on hand can turn a simple Cubase MIDI track into a MIDI routing and processing powerhouse :slight_smile: