Midi transpose on the fly

Hi - the product has great potential from what I’ve seen.

I’ve been waiting a long time for a particular function: a midi device that will use note information from midi input A to transpose note messages received on midi input B. The transpose amount would be defined by comparing the last received note on input A to a reference note (e.g. C3).

I’ve downloaded the Editor App, which gives the following description for ‘transpose’ A modifier pipe that adds its semitones argument to all MIDI Note On and Note Off events. Other MIDI data is passed through as is. With the Midihub, could the ‘semitones argument’ be defined using incoming midi notes, in the way I describe above?

Hi, welcome to the community! :slight_smile: We are still developing the Midihub firmware and software, at the moment transpose amount can be changed via CC messages. We were planning to support mapping note messages to parameters as well where it makes sense, the code design supports that, so transpose pipe should be usable in the way you describe in one of of the future updates. :slight_smile:


any update to this - would love to control transposition of notes in one pipe via the notes of another pipe.

1 Like

I did solve this one for one of my patches, but it’s a but convoluted.
In my setup here, I have a loopback, and the output D goes to my Keystep midi in, which is passed through to my midihub … you have to be careful to control precisely what gets sent out such a port because you can get a midi howl-around very quickly.
So here, a note comes in on i/p B which, in my case, comes from a pyramid track playing a middle C (Note 60). On the pyramid I can transpose this track up or down… the number of semitones shifted equates to the shift I need to replicate on the midihub.
After some experimentation, I worked out that I needed to transpose my note up 4 semitones in the midihub pipe, and then I could trasform it into a cc message, with the value as the note value, and that cc can be mapped to any traspose pipe on the midihub in order to transpose the notes in that pipe.

One last detail. If you were to attempt to map a transpose pipe to your incoming note, it would actually map to the note before it could map to the transformed cc value. In order to get around this, I inserted a delay pipe to delay the incoming note by a few bars. That way, I could play the note, then quickly select map on the trasform pipe, and then wait for the transpose amount to be mapped to the transformed cc value … don’t forget to bypass the delay once all your mapping chores have been completed.
Now, all the mapped transpose pipes will change their transpose value in line with the note arriving
Hopefully that helped, and didn’t sound too impenetrable :slight_smile: