Loopback without sacrificing one pair of ports using MIDI TRHU.
The purpose is to manipulate CCs with Midihub and to send it back to for more flexible mapping to Midihub’s parameters.
Benefits: no need to sacrifice a pair of ports for wired loopback, easy and precise selection of presets with a single CC knob on a MIDI controller, more than 8 presets. Three birds with one stone ;-)
The loopback is created by MIDI 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.
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…3 values, and that allows me to precisely select a value of the knob. Each value of the knob is switching to a completely different “sub-presets” in a single Midihub preset.
The main part of the patch are three transform pipes which replace the CC assigned to my MIDI controller with a new CC which gets also scaled to work properly when the new CC is mapped:
1. Knob on my MIDI controller is on CC0/Ch16. It may have values 1…3 (as set in the controller). Each value will select different routing of signals in Midihub. Basically the knob will work as if I would change Midihub presets by pressing the button on Midihub.
2. Value 2 get transformed into CC2/Ch15 and value 127. Values 0..1 and 3…127 get transformed into the same CC and Channel, but with values 0.
3. When I turn the MIDI controller CC0/Ch16 to value “2”, value of CC2/Ch15 will jump to 127, other values of the CC0/Ch16 controller will send value 0.
4. Now CC2/Ch15 can be mapped to a filter which is doing the real job. Additional transform pipes and CCs create additional “sub-presets” which are doing the real job, e.g. remapping Channels, or whatever. This example contains three “sub-presets”, but you can create many more.
5. Mapping of the new CC2/Ch15 is tricky, because the same knob on your MIDI controller will send CC0/Ch16 first, then CC2/Ch15 will be created and sent through the loopback. You need to try to map a few times, until CC2/Ch15 gets mapped, then, delete other mapped CCs. If your controller (like KeyStep) allows you to freely assign any CC to the knobs, you can use a workaround which is to assign CC2/Ch15 to another knob, map it, and change the knob to another CC that you want to use (I hope Midihub editor will allow to manually enter CCs to be mapped in the future).
I’m sure the patch can be improved, see this thread for updates: https://community.blokas.io/t/are-mapped-values-processed-by-pipes/4639/11?u=unroot