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.
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
- Perform an action for every
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 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)
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).