I’m trying to use the Input Transformer to convert CC0 to CC1, but only for events on MIDI Channel 2. Channel 1 should be left untouched.
I set up the following filter:
Type = Controller
Subtype = CC0
Channel = 2
With the action to transform CC0 → CC1.
However it doesn’t work. After debugging I believe the issue is that CC events don’t carry channel information the same way Note events do — the Channel 2 filter never fires, suggesting that CC0 events are not being transmitted on Channel 2 regardless of which articulation is active in the Expression Map.
Is this a known limitation of the Input Transformer? Is there any way to filter and transform CC events based on MIDI channel?
I have Input Transformer scripts that the first comparison is to filter for MIDI channel, so I know that this works.
The next check I make is for the range of CC#, because I want to change the value if within a specific CC# range AND the value is also within a specific range.
It seems the only difference is that you want to change the CC# instead of the value.
Are you sure that you aren’t trying to do this AFTER filtering the channel, such that the channel never matches?
I’m not very experienced with this but the idea is that at the end you slect “Transform”. The filter part is just so select what we are going to transform
Interestingly (not so much!), my MIDI appears to be broken! This is likely due to a Windows update. Once I figure out the problem, I will try to include a test for you.
I also mix up “Controller value” and “Controller no.” from time to time. Your settings change any controller, that has the value 21 to value 22, independent of its CC number.
Thanks for the suggestion! I tried setting it up with Channel as the first filter line, but it’s not converting anything now — not even on both channels like before.
Quick question: how are you confirming that your setup is actually filtering by channel correctly? Are you using a MIDI Monitor to verify, or checking by ear?
Also — in your case, are the events you’re filtering already recorded with explicit channel information in the MIDI data itself, or are they being assigned to channels dynamically (e.g. via Expression Maps)? I’m wondering if that might be the key difference, since in my case the channel is only determined by the Expression Map at playback time, not by the original MIDI data
The Input Transformer works on midi input ports. If the data is already present on the track it cannot influence it anymore.
Try the midi plugin “Transformer” instead. Maybe that’ll work. I am not sure, however, since I don’t know whether the Expression Map sits before the plugins in the midi signal chain or behind them.