Transform CC to modify midi channel


Im trying to figure out how to get Midihub to change the Midi channel depending on the CC number and then send the value to a fixed CC. Example: I send a CC 01(variable) to midi channel 15 and then midihub changes it to send a CC 95 (fixed) to midi channel 01(variable deppending on input CC)

It is even possible? Im scratching my head trying to figure it out. Any help appreciated. Thanks in advance!

Try using Transform pipe with properties like this:

It will replace CC01 (any value) on ch. 15 to CC95, value 123 only, as specified by arg 2, on ch. 1.

1 Like

Hi Sergio,

To add to Giedrius’ reply and screenshot:

If your…

I send a CC 01(variable) to midi channel 15 and then midihub changes it to send a CC 95 (fixed) to midi channel 01(variable deppending on input CC)

…means the same as…

I send a CC 01 value on channel 15, then midihub changes it to send a CC 95 fixed value on a midi channel (variable and dependent on CC 01value)

…then you want as many Transform pipes as output channels.

So for example, for 4 channels you would have 4 Transforms, each identical apart from the Set Channel To and the Work with Value in Range Low|High settings

Work with Value in Range Low|HighSet Channel To values could be

  1. {0,31} → 1
  2. {32,63} → 2
  3. {64,95} → 3
  4. {96,127} → 4

Hope that’s useful.


First of all thanks for the quick response!

Yeah sorry i think i didnt explain it correctly. English is not my main language and its hard for me to even try to explain it in my mother tounge.:upside_down_face:

What im trying to accomplish is to make the CC number (not value) change the midi channel of the output CC message (fixed number and variable value).

So for example if i send a midi CC16 with a value of 13 to channel 03 i want to output a CC95 (always the same number no matter what) to channel 16 (changing depending on CC number) with the same value as the input (in this case, 13). Hope its clearer now.

Im doing this because i’ve run out of midi channels in my controller to control my elektron devices (they each use a midi channel per track) so i want to use the Midihub for filtering and distributing the CCs. Ive also want a feedback midi loop in each device so its a pretty complicated setup. Maybe im missing something it but i cant think of other solution right now.

I think what im really asking is to have the option to select CC Number in the Set Channel To section of the transform pipeline instead of a fixed value but maybe there is a workaround?

Anyways thanks again!

No criticism of your English intended, Sergio - just wanted to make sure I wasn’t answering a different question!

About to travel now, will pick up the more complicated bit later if noone else has!


OK, Sergio, I’ve got ch03.CC#16 value 13 → ch16.CC#95 value 13
give us a couple of other examples so I’m clearer in my head about what your range of solutions might be.

also want a feedback midi loop in each device

I guess you mean loop like “Elektron X” → Midihub → “Elektron X”

maybe there is a workaround?

Definitely. It may involve Transforms–or even a Channel Remap after a CC Range Filter might suit your needs–but almost certainly do-able

1 Like
  1. ch11.CC#28 value 127→ch14.CC#95 value 127
  2. ch01.CC#29 value 0→ch15.CC#95 value 0
  3. ch03.CC#29 value 72→ch15.CC#95 value 72
  4. ch07.CC#30 value 32→ch16.CC#95 value 32

Yes. Basically now i have:
Midi controller out → Midihub 1 → External synths
Digitakt out → Midihub 2 → Digitakt in
Digitone out → Midihub 3 → Digitone in
Octatrack out → Midihub 4 → Octatrack in

So i need something like 42 midi channels to adress each track separately. Does it make sense?

I was thinking the same. Initially i thought about using the Transform pipe because i thoght i could transform midi channels but it was channel pressure. I just wish it doesnt involve a single pipeline for each CC because thats going to be a lot of work :rofl:

Thanks so much for all the help, you guys are the best!

1 Like

It may involve multiple pipes all in a single pipeline, Sergio, but it will be at worst a “do once” job (if you want to see a lot of Transforms, check out my Volca Drum patch on patchstorage!)

Thx for the examples, I was hoping to see some patterns there (like CC#29-32 → ch14-17) but unfortunately not so far.
But, there may be sub-patterns in the whole set of 42.
For example, I notice (obviously!) everything goes to CC#95(same value). That means that once the channels are changed to the ones you want you (and you’re in a pipeline where no other CC is gonna get messed up), you can just do a CC remap {16,30} → {95,95}

Now if your whole set can be broken into "Channel Remap"groups like your 03.CC#29 & 07.CC#30 you might be able to shortcut the process.

If you can be bothered to post up all your coordinate pairs…
(…in shorthand if you like, like this…)

  • 03,16,13 → 16
  • 11,28,127 → 14
  • 01,29,72 → 15
  • 03,29,72 → 15
  • 07,30,32 → 16
    (here I’ve left out the ,95,n cos I assume that applies overall)

…then I can tell you whether there’s any savings to be found.

btw, if in the end it’s quicker to just plod through with lots of Transforms, you can save a lot of boring property-setting by setting up one Transform with right settings and the using alt-drag to make a copy with the same settings. Slightly less boring!

1 Like

Hey! I was just given random examples for you to understand what i wanted to archieve, not the exact ranges of CCs i wanted to use.

Im still testing my setup but for now thats the mappings i want to do: (i’ll omit value because it wont change eitherway)

CH:1 CC:1-8 → CH:1-8 CC:95
CH:1 CC:11-18 → CH:1-8 CC:94

CH:2 CC:1-6 → CH:1-6 CC:95
CH:2 CC:11-16 → CH:1-6 CC:94

CH:3 CC:1-8 → CH:1-8 CC:46
CH:3 CC:11-18 → CH:1-8 CC:49

Hey back!
OK, I was just doing a clarifying patch when you updated:

ymk_remap_example.mhp (462 Bytes)
Pipelines are:

  1. Use pair of CC Range Filter and Channel Range Filter to restrict what gets through to the Channel Remap
  2. Duplicate (right-click) of line 1 for different subset of Channels x CCids
  3. dead pipeline to just to say “more lines like above”!
  4. bring all together to remap the CC ids

Now if you’re at the planning stage and have choice over channels/CCids, you should be able to use this approach to do whole batches of controls per pipeline.

Note:some of the Remaps are “upside down” ({1,3} → {16,14}). Many users miss this trick think!


Hey sorry for the late response but i didnt had the time to try your patch out till now. It was hard to understand for me at first but it totally works.

Thanks so much!