Split MIDI CC

I’m trying to find a way to split MIDI CC at a certain value.

Use case: I have an expression pedal hooked up via a MIDI a baby that sends midi CC on channel 0 (heel 0 toe 127). I’d like to trigger a Modded EHX Freeze attached to a Suhr MicroMidi . The MicroMidi will turn the freeze on when it gets any CC on channel 1 and turn it off if it gets any CC on channel 3

Essentially what I need to do is filter the CC so that any value under say 30 goes to channel 3 and any value over 30 goes to channel 1.

There isn’t a plug-in that can do this directly, but it seems like it should be simple to combine a few.

I would think I could split the midi input to two CC scale plugins, that go to 2 Event Filter Plug-ins and then finally to two CC map plugins.

For the first path:

  • The CC scale plugins could use the CC Start/end to indicate 30-127 and set that to a 10x scale. So all values 30-127 would report 127.
  • The event filter plugin could use a custom CC filter to drop CC of 127 (thus only leaving messages with a CC of 0-29)
  • CC map could then change all the remaining CC messages to channel 3

The second path would essentially have the inverse. Only allow through messages 30-127 and send them to channel 1

However, this seems to break down at the CC scale plugin. I’m probably misunderstanding the parameters, but it seems to just let through all the normal CC messages.

This image shows the midi in (left), the scale and the output of the scale. At a CC of 50 it should read 127 (50x10 = 500, clamped to 127). However, it reads 50.

Anyone have any idea what I might be doing wrong or can is there a simpler way to do this?

Turns out I was able to do this by converting the CC to a note, filtering with the Midi Velocity Range Filter, and converting it back.

Kinda strange, but works great!

5 Likes

Disappointing method, we learn by trying :wink:
No delay introduced ?

Such knowledge should be incorporated into the wiki. :smiley:

5 Likes

all plugins run within a fixed audio block, 99,9% of them do not introduce any extra latency.

3 Likes

I was on the midi area, not audio.

midi and audio run together. there is no separate threading for MIDI, with the exception of the hardware level before and after it gets into the software layer.

3 Likes

I don’t think the midi processing would introduce any delay.

I am sort of using output 2 as an effects loop, which I’m sure introduces delay. However, given the way that I’m using it (swelling in a sustain effect), I can’t tell if the delay would be noticeable or not.

1 Like

That’s an ingenious solution, congrats! :clap:

Just curious: does the first box [MIDI CC to Note] not require a specific CC parameter? Or the output note? That is: CC 0 means any CC?

It may look like a cumbersome arrangement, but if you were to do it with other software (Bidule, Max, Logic Pro’s environment, etc.) you would also need more than one object to perform the entire operation – unless that specific software has an object for that exact purpose.

Thanks a lot for sharing this! :heart_eyes:

1 Like

It has a couple of modes. One can change the CC to pitch with fixed velocity and another (the one I used) changes CC to velocity with fixed pitch. So I just set the pitch to 0 and let the CC control velocity, which I could then filter.

1 Like

I will save this as a request, although it’s kind of for me. You are 100% right, I’m just missing time at this moment :neutral_face:

2 Likes