Virtual Mapping Techniques

“Anonymous” or “Proxy” mappings

Even ‘traditional’ mappings can be made more versatile by substituting virtual mappings.

This perhaps so simple it’s easy to overlook how useful it can be.



Instead of the usual mapping from MIDI-A, USB-C and so on…

Anonymous0

…use a virtual mapping


The mapped property behaves exactly the same…

…but now you have the freedom to send the mapping message from wherever you want

without having to remap your controls


Why is this useful?

The mapping might be modulated initially from a keyboard or controller on MIDI-A…

…but later you might want to send these same mapping events from…

  • …a sequencer on MIDI-B

  • …or a DAW on USB-A

  • …or even from within Midihub itself
    (showing an LFO here but there are many other possibilities)


“Anonymous” mappings allow us to just add those inputs to the message flow…

…instead of re-designing the mappings or adding extra ones.


And if you decide later you want to change the channel (or some other attribute) of the mapping…
…it’s maybe be easier to just add a “channel translation” Transform to “correct” the incoming channel…

particularly when that mapping is used multiple times…

… or it’s months later and you can’t really remember exactly what you did back then!

Lastly, it might make it easier for folk to adapt your patch if you decide to share it (as discussed here)

(FWIW, nowadays, I use this technique as soon as I go beyond the “quick and dirty” phase of building a preset.)


Demo patch

VM11_anonymous_mappings.mhp

The LFO in the last pipeline has it’s Depth and Phase modulated by CC3 & 4 respectively

  • “Un-Bypass” pipeline 3 and watch the mapped LFO graph move automatically

  • Bypass pipeline 3 and modulate the graph manually from one of the external inputs.


These CCs are “channel corrected” by the two Transforms in pipeline 4 so you can either…

  • …“break” the mappings by Disabling the Transforms and using a Channel input other than Ch.1

  • … or change the Work with CC Number in Range Low|High value to adjust to the CCs coming from your controller.