Virtual Mapping Techniques

“Cycled State” mappings

A toggle state cycles between just two values. This demo show one way of cycling between up to 16 values by using Dispatcher

This Demo

VM4_cycled_mappings.mhp

The Demo line source will cycle between certain inputs dictated by the Dispatcher channels selected.


Notes:

  1. Whereas a “Scale Down → Scale Up” mapping will allow output values like 16, 24, 40, 48, 56, 64, this technique goes through the values in (‘Round Robin’) order
    and allows us to skip values to give, say, 16, 24, 56, 64

  2. This Dispatcher is set to the original ‘Round Robin’ Algorithm to ascend the values and then cycle back to the lowest.

    Setting to ‘Ping Pong’ or ‘Random’ will give quite different results which may also be useful or interesting.

  3. The key Transform uses Set Value to Incoming Channel. This produces values 0, 8, 16, 24,…
    A Rescale is included to change this to whatever mapping is suitable.



Other techniques which can give similar results include:

  • Multiple “Range” mappings.
    A pipe per value approach.
    More flexible, can be any length/spacing, more laborious to write and adapt

  • Scale Remap approaches.
    Limited to 12 values initially.
    Very useful when you need a custom route through a set of values
    (This is detailed below & an example can be found here)


Scale Remap cycles

The Dispatcher technique above allows a single key/button to run through an ascending sequence –perhaps with gaps– with up to 16 elements:

0 → 1 → 3 → 6 → 8 → 9 → 12 → 0

This variation allows for a sequence in any order with up to 12 elements:

0 → 6 → 3 → 11 → 10 → 9 → 5 → 0

It uses (misuses?) the Scale Remap pipe’s ability to send any semitone to any semitone…
…and stores the result in the Transform that creates the Remap’s incoming note.

VM4a_ScaleRemap_cycled_mappings.mhp

This animation shows this in action selecting 4 LFO Waveforms:

Saw Up → Tri → Saw Down → PWM → (Saw Up)

LFOcycleUniF
(the Roman numeral interval numbers get a bit confusing – I just ignore them and count from zero!)


Other use examples would be selecting Arpeggiator Note Lengths &/or Arp Types in a particular order.

This approach, like “Toggled State” mappings needs to store its state in a Transform argument

here's the message flow

here the Scale Remapped note has two roles:

  1. to create an scale the mapping state we want for elsewhere in the preset

  2. to map the new note# back to the “creator” Transform so that it is ready for the next external trigger.

NB. The Length pipe is necessary as, otherwise, Scale Remap will not work as expected once it has reached it’s memory limit. We use the Note Off here for mapping 2.


Scale Remap Extras


Intro and Loop sequences

Scale Remap can also be used for a lead in to a cycle eg.

0 → 6 → 3 → (11 → 10 → 5 → ) (11 → 10 → 5 → )…

or even

0 → 6 → 3 → (11 → ) (11 → ) (11 → )…


Multiple sequences
In these cases, it may be useful to use a separate button/key to jump back to the beginning of the sequence.

The approach can also be used for multiple cycles triggered from separate Transform Note On “creators”, each following a (non-coincident) path;

  • say 0 → 6 → 3 → 11 → 10 → 9 → 0

  • and 1 → 4 → 8 → 7 → 10 → 2 → 1

(here the separate “creator” Notes are on different channels so that they can be handled independently after the Scale Remap)


back to contents
1 Like