Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 2.71 KB

mapping.md

File metadata and controls

59 lines (46 loc) · 2.71 KB

Mapping definition

This mapping system is designed to be as flexible as possible, allowing for a wide range of use cases while still being easy to use and understand.

Values

A profile can have any number of values assigned to the knob. Each value has a type, which can be one of the following (exact list subject to change):

  • Profile
    • Shows a list of profiles on lcd
    • Profile list can be all profiles or a subset of profiles (configurable)
    • Value, rotation range, etc determined by the current profile and profile list
  • Gamepad Axis
    • Directly output a gamepad axis value
    • Value, rotation range, axis, deadzone, etc configurable
  • MIDI CC
    • Directly output a MIDI CC value
    • Value, rotation range, MIDI channel, etc configurable
  • OSC Value
    • Directly output an OSC value
    • Value, rotation range, OSC address, OSC port, etc configurable
  • Actions
    • Perform an action for every
      • Clockwise step
      • Counter-clockwise step
      • Step in either direction

Each value usually has a:

  • configurable rotation range (How many degrees/rotations does the value cover? Can also be infinite)
  • value range (What is the minimum and maximum value? Can also be infinite?)
  • step count (How many steps/detents are there in the rotation range? Can also be none/0)

Depending on the value type, there may be more/less configuration options.

The behavior of the knob (haptics, rotation range, step count) is determined by the first/topmost active value in the profile.

Values can be active/inactive based on a key condition which is met if the right keys are pressed/not pressed:

  • Pressed [x]
  • Not pressed [-]

So a value with the condition [-][-][-][-] would always be active, while a value with the condition [x][-][-][x] would only be active when the first and last key are pressed.

Actions

Actions can be assigned to the press/release/holding (configurable time) of the keys and to the Actions value type.

Actions can be one of the following (exact list subject to change):

  • Keyboard key press/release/hold
  • Gamepad button press/release/hold
  • MIDI note on/off
  • MIDI CC value change
  • OSC message send
  • Serial message send
  • Profile change (to a specific profile, next/previous profile, within category, etc)

Global mapping

This system allows for a global mapping (initially called Internal Macro by Karlitos) to be defined in the exact same way as a profile mapping, it would just exist across all profiles (and take precedence over any profile mapping).

Whiteboard sketch 1 Whiteboard sketch 2