Restricting and transposing chords to a limited range

Hello! I’ve been a MidiHub user for most of 2021 now, and I’ve attempted to use it with several pieces of audio and visual gear, and most recently been pairing it with video synthesis hardware. I’m trying to think of a way to build my pipelines, and I can use Transpose for most of what I’m looking for but would like a way to treat it more programmatically than explicitly for every relationship I want.

Essentially I am trying to stick to values within a 1-2oct range and apply a set of transforms such that e.g. note D-1 comes in on a particular channel, I would like to have note D-1 dispatched to two other channels and note D0 sent to a third. Where this gets tricky is in restricting it to a range, such that if I provide note D0, I don’t want transposition up an octave, I would like D-1 sent instead. Essentially such that one of the notes I dispatch is always 180° from the origin, if that makes sense.

The end goal of this is to have one note pressed on my controller (notes are simplest to send from control pads – using an Akai MPD226), and have three different CC values sent out as a result to the device I’m controlling, a Sleepy Circuits Hypno video synthesizer. The intended effect is to essentially “zero out” any color shifts, to reset all three color parameters simultaneously to their boot values.

The reason I’m suggesting dispatching to multiple channels above is simply for routing internally in the MidiHub, such that one channel will match to the desired output CC, to provide simple filtering.

If I had a script block, I would have no problem writing a function to do this, and would be very happy to do so! As it stands though, I’m not 100% certain of how to accomplish given the limitations of the existing pipelines. Any suggestions? Any offer of when (if) any such “script” pipeline block will be exposed to end users?

1 Like

Well I found something that works to my purpose. It’s not as dynamic as I’d like, but I’m able to quickly “zero out” the offsets applied on several CC values, which is the reason I’m asking for more complex functionality.

This is much simpler and just as effective, I think. I was way overthinking it.


At the front I have three parallel lanes with a range filter capturing the key I want, and at the end I remove that note, in between sending three specific transforms to the CCs I want.

1 Like

I figure I should post here also a bit about my usage, because I am not producing or modifying sound with this device!