Are mapped values processed by pipes?

Sorry if this is a newbie question: are mapped values processed by pipes, or used unmodified, as received by an input?

It seems that Feature Request Pipe for processing of MIDI mappings is about the same thing and it has not been implemented (yet?), correct?


that’s how it stands now.
Internal/scaled mappings are not yet implemented.
in the meantime a number of users employ a physical-loopback technique.

see here for a little more detail

That’s a shame. I would open up a whole new level of patching.

That’s ironic: you can use Midihub to shape messages going out to other devices, but you can’t control Midihub with it’s own pipes… wait! I could daisy chain two Midihubs! :wink:

1 Like

Indeed if you’re lucky (or wise :wink:?) enough to have two Midihubs, it gets to be fun squared!

But if you can afford to devote an In&Out to a loopback, all sorts of possiblities open up with just the solo Midihub.
I’m not alone in hoping this will be possible in Midihub one day.
All I can say is, the more I’ve built loop patches, the more I appreciate the difficulty of providing this stuff natively in a way which is both ‘safe’ and comprehensible to the wide range of users…

PS. some loopback patches on patchstorage

1 Like

Thanks for the feedback, I didn’t pay attention to loopback because I thought of a loopback with computer (silly me), but this is actually a physical MIDI out-in loopback. Interesting.

I wonder if I can leverage CME WIDI Master which is connected to one pair of ports on my Midihub… This way I would need to use another pair of ports. Interesting idea to explore, thank you!

Yes, so your setup would be an amalgam of this

and this

…then a simple patch to scale a CC use the loop to present it to Midihub as a mapping could look like this:

(note the pipes in the loop to ensure that what leaves the loop never re-enters)

To actually set up some property to be mapped to your re-scaled CC see Loopback Mapping Tool | Patchstorage

1 Like

Thanks, very useful.

I guess I would also need to enable MIDI Thru on one of WIDI connected instruments, right? This would forward outgoing messages back to the input creating the loopback. Unless there is a feature in WIDI to enable the loopback? I didn’t search their knowledge base yet, so I’m not sure WIDI has it.

At this point you’d need to sketch out:

  • what your Midihub A-C inputs would be
  • what your Midihub A-C outputs are going
  • what pipe/s are going to be mapped and what messages they’re modifying etc.

So my sketch shows the mapping part of a patch,

Overall in the patch you might have say

  1. keyboard notes from A.WIDI going into an Arp pipe …
    …these arpeggiated notes going out to a sound module,
    …and maybe the chords to a synth pad
    (these both receiving messages from A.WIDI-OUT)

  2. a controller CC also at A.WIDI sending [0; 127] values to be Rescaled and sent into D.LOOPBACK-OUT where

  3. they arrive at D.LOOPBACK-IN and control say the Arp’s Note Length just for the range [1/4; 1/16],
    or maybe the Type between [Low Up, Low Up and Down, High Up, High Up And Down]
    (in the latter, you could get more precise by using Transform pipes instead of the Rescale to have just the Types you wanted in the order you prefer)

In this scenario, there’s no need for any THRU.

I guess I didn’t make myself clear: I would like to create a loopback with WIDI alone, WITHOUT using another pair of MIDI DINs and a cable between them.

I didn’t try it out yet, but the idea is following:

  1. CC0 on Channel 1 is scaled to values 1…4 in my controller. This way I will have clear display on the controller which value I’m sending out.
  2. CC0/Ch1 goes in to Midihub via MIDI DIN
  3. In Midihub to scale CC0/Ch1 to 0…127 which is needed for mapping of Midihub parameters. Also, I change CC0 from Ch1 to Ch2
  4. I send rescaled/transformed CC0/Ch2 to MIDI port where WIDI is connected
  5. Instrument connected to WIDI has THRU enabled, so the CC0/Ch2 will bounce back to WIDI connected to Midihub’s input
  6. I map CC0/Ch2 to a parameter in a pipe that has 4 possible values (this is why CC0/Ch1 was 1…4)

I hope this makes sense, but I’ll be able to try it out next week (no time).

Well, once I wrote this I realised that there is no way to enter mapping manually… Midihub will receive CC0/Ch1 and CC0/Ch2 almost simultaneously. Since CC0/Ch2 will be a bit delayed, it may not work at first, but if I map it again, then I hope it will map CC0/Ch2 as well. Then, I would delete CC0/Ch1 mapping, so only the scaled/transformed CC will be used by mapping.

A lot of assumptions here, time will tell - next week :wink:


1 Like

OK, I see. can’t see an issue with THRU† as long as there are no channels conflicts.
If you get heavily into loopbacks you might need to be a little bit extra careful about keeping everything honest; it gets tricky enough keeping track even with a straight cable out → in arrangement.

That’s what the LoopbackTool is for.
Just Append it, change the Midi Out to your A.WIDI or whatever and then the CC0/Ch2 message will be created within MH and the first message the listening property will receive will be the CC0/Ch2 coming back in after its OUT → THRU → IN circuit

† PS. Clock messages could be a significant issue in a WIDI-THRU-loopback

It works! I have a loopback without sacrificing one pair of ports and I can scale and send CC back to Midihub and map it however I want!

I have created the loopback with THRU enabled in the instrument which is my master clock (it’s always on). This instrument is using Channels 1-8, and I send loopback to Channel 16, so the CCs that I’m using don’t mess up parameters of the instrument.

With a few transforms I translate the CC to another value which gets also scaled to new CC which will be used for mapping. Then, the new, scaled values are mapped to a filter, which is passing only the MIDI information which is needed, e.g. notes, not clock etc.

Now I can use a single knob on my MIDI controller to completely change behaviour of Midihub, as if I had multiple Midihub presets assigned to the knob. The knob is scaled to send 1…16 values, and that allows me to precisely select a value of the knob. Each value of the knob is switching to a completely different routing in Midihub, as if I had 16 presets in Midihub.

More than 8 presets, easily and precisely selectable from a single knob of my main MIDI controller, without losing a pair of ports - three birds with one stone :wink:

The setup is a bit complex and requires some tricks to make it work, but it’s feasible.

I hope I’ll have some free time to write down how this patch works and how to set it up, if anyone is interested to see it?



Sounds pretty cool!
Why not upload the patch as is anyway?
I’ve not seen a MIDI-THRU loopback before so it would be good to see what you’ve done even without documentation…

Here is the patch with basic description:

I hope this helps. Thank you for helping me to create this.



Awesome work!
Would love to see a video expaining what it does and how it works.

Midihub patches are not easy to reverse-engineer, and a more complex patch like this one is for sure confusing and difficult to reuse. A video walk-through would definitely help. Unfortunately I have zero experience creating screencasts, but I’ll try, when time allows, maybe with a simpler patch which will use the same trick to control random module.


Yeah, the setup for making a decent screencast is not easy, especially when external hardware is involved. And it takes time and energy to make a screencast, so no pressure at all, just the honest statement that I would appreciate seeing a screencast on this.

In case you commit.
Would recommend the excellent OBS to mix and match the cast. Maybe to capture what is going on on the Norns and maybe VMPK for on screen piano keyboard. Also Protokol from is great for visualizing Midi flows.

OK, here an explanation that I hope will be helpful.

I know that the channel that goes to MicroFreak could go straight to the synth, but I want to have more than 3 “sub-patches” which are currently created in this preset.

As you can see I have more than 16 MIDI Channels but I want to use KeyStep’s excellent Channel selection feature to play on any Channel/track of any of 4 connected instruments. One CC knob allows me to select the “sub-patch” with different layout of MIDI Channels.

I also want to add a pseudo-polyphonic Channel which will play up to 6 voices or chords using all tracks of Model:Cycles or Nord Drum with the same sound on each track.

For sure there is a lot that can be optimised (use virtual channels, reduce number of pipe lines), in the preset itself and in HW layout (e.g. daisy chain KeyStep with MicroFreak will save one pair of MIDI In/Outs on the Midihub), but I hope this simple layout explains how the THRU loopback works and how to use it with CC to control the Midihub itself.


Wow, this is awesome! Thanks a lot!