Cubendo MIDI bug: Track Input Transformer not working correctly with Expression Maps

When using PC messages to trigger the Expression maps, PC messages are not getting filtered by channel by the Track Input Transformer.

This means that all track sharing a MIDI port will receive PC messages from any channel and all channels routed to them.

The expected behaviour is that the Track Input Transformer should be able to filter all incoming messages by channel.

Version 12.0.5
Windows 10 Pro

Could you post a screenshot showing how you’ve setup the Track Input Transformer.

It’s just the factory presets for channel filter. No other settings.
I have 16 channels for a brass section.
All brass are on the same incoming MIDI port.
Each of the 16 channels are filtered by the Track Input Transformer, factory presets of 1-16.
The filters work correctly for MIDI note and CCs, but do not filter the PC messages going to the expression maps.
When I use a PC message to select an articulation on only one channel, all 16 channels of the brass section will change.

Are you sending the PCs from a keyboard in real time, or from another midi track?

Over RTP and also a MIDI controller.
Both sources see the same issue present.

Are you quite convinced about that?

In my little test scenario, it seems like the Expression map ignores note filtering as well.

I’m not 100% sure, but it almost seems like the Expression Map receives the live MIDI input before it gets to the Input Transformer.

The filters work correctly for filtering the notes to the corresponding MIDI track/VSTi.

Yes, it is likely that the Expression Maps have accidentally been routed before the Track Input Transformer in the signal chain.

That’s what I’ve observed in my testing as well …

I’m not necessarily convinced it’s an accident - could very well be a design decision.

Interestingly enough, it seems that Program Change messages end up getting filtered out from the track, if activated in the Expression Map. (Haven’t tested other message types yet).

But that’s what happens to Keyswitch MIDI Notes when they go through an Expression Map too, so that is consistent behavior. I wonder what it looks like in the List Editor.


This is just for some Keyswitchs, but notice that all the articulations got converted to text

I wonder if the Program Changes get converted into text (and looses any channel info in the process). This is then used by the Expression Map to trigger a Slot to generate the Program Change. So whatever channel is set in the Map for that Slot is what gets sent out.

I do know that when you assign a message as an output mapping of a sound slot, that message will get blocked at the input.

The benefit there is that you can assign PC messages to trigger key switches, then the key switches can be triggered by a source that is not your keyboard and then those keys will not get in your way when playing multiple instruments at the same time (having multiple tracks armed). If you are playing a full brass section from multiple VSTis, you can’t have the switches active on the keyboard itself, as it will just completely ruin the situation by getting lots of unintended articulations.

The conversion to text is fine however, if it happens after the Track Input Transformer, rather than before, as only selected channel would even see the message to convert it.

I don’t see a good use case scenario for not being able to filter the messages by MIDI channel. If the user wanted to send the PC message for the Expression Maps (or key switch) to all channels, they could do that on the front end like the rest of the messages. As it stands, I can see know way to isolate PC messages by channel for the map, which from a design perspective still seems like a mistake to me. My hunch is that it ended up this way, but not with a clear intention at the design stage.

It almost seems like the Expression Map specification assumed that Expression Map input is OMNI Channel. – And I have no clue why it would be that way.

1 Like

Try disabling the Expression Map and record the Program Change as just regular MIDI Data. Does that work as expected?

Can you post an image of the Map itself.

@mk1x86 can you look at this thread with your expression-map-expert hat on

Yes, I already checked that the tracks are recording PC messages. I armed all 16 tracks, each on a separate MIDI channel and only the proper channels received the PC message as shown by the recorded MIDI data.
I can post images of the maps themselves, but it does not matter which one I am using- every one I have tried so far does this (about 12 different maps).


I’m actually finding it technically impossible to take a screen shot of the expression maps on Windows as when I use Snips to take a shot Cubendo hides the map window. Same for the input transformer window.

The extra slots not assigned to a remote are just place savers to block the unused key switches.

I tried an experiment to put MIDI tracks on the front end, using the Track Input Transformer to filter the MIDI channels, then routing the output of those tracks to Instrument tracks.

The notes will play back, but the expression maps will not change. It seems that the PC messages are not passed from the MIDI track to the Instrument track.

Here you can see the PC messages recorded to the MIDI track:

And the Expression Map not responding:

The input is actually quite strange. The expression map contains am entry for a note message. Depending on whether the PC remote checkbox is ticked this is then interpreted as note or pc. Indeed the remote triggrr is actually a note on midi message for channel 1:

<obj class="PSlotThruTrigger" name="remote" ID="4">
<int name="status" value="144"/>
<int name="data1" value="12"/>

This is what the editor generates for a PC 13 resp. C-1 note remote trigger

1 Like

MIDI Channel 1 might be an artifact of NOT having a MIDI Channel variable filled in at all and therefore defaulting to zero. So my theory is, that MIDI Channels were simply overlooked or ignored when designing that functionality. And with the majority of VST instruments being single/omni channel, it’s a tempting oversight/ bug in the design specification. Or a reflection of very “opinionated design”.

And incoming Program Change may have been a late afterthought in the evolution of the Expression Map functionality?

The Expression Map GUI for incoming messages also strikes me as rather odd when Program Change is selected.

That’s an artifact of Cubase loosing focus. I don’t know anything about Snips. But I do use Snip & Sketch that’s part of Windows and it lets you use a delay before taking a screenshot. During that delay if I click on Cubase it will regain focus and the Window will become visible again. So look for a delay capability.

1 Like