-
-
Notifications
You must be signed in to change notification settings - Fork 55
MIDI
Control mapping may change without notice, but the general schema should remain similar.
NRPN MSB is used for category (panel control, groove edit, fx edit, etc...).
Physical controls send NRPN messages, reception of controls is not implemented yet.
Only FX editing is currently implemented for received NRPN.
For panel controls:
All controls send Pad Mode as NRPN LSB (CC 0x62).
DATA-MSB (CC 0x06) is split into nybbles, control category and control index [Cat:Idx].
Buttons send DATA-LSB (CC 0x26) with state of the button (0x00 or 0x7f).
Encoders send DATA-INC (CC 0x60) or DATA-DEC (CC 0x61). Value is always 0x01 and can be ignored.
CC messages are only sent when the value changes. Once a pad mode and control parameter are selected using NRPN-MSB, NRPN-LSB and DATA-MSB, successive changes to that control will only send DATA-LSB (CC 0x26).
Example
Panel control:
Button push:
Channel 4:
Keyboard Mode:
Shift Button:
PadMode = 0x05
Control = 0x0a
When button is pressed:
| NRPN-MSB | NRPN-LSB | DATA-MSB | Data-LSB |
|---------------------------|---------------------------|----------------------------|--------------------------|
| Status | CC-Num | NRPNCat | Status | CC-Num | PadMode | Status | CC-Num | Control | Status | CC-Num | Value |
|--------|--------|---------|--------|--------|---------|---------|--------|---------|--------|--------|--------|
| 0xB4 | 0x63 | 0x00 | 0xB4 | 0x62 | 0x05 | 0xB4 | 0x06 | 0x0a | 0xB4 | 0x26 | 0x7f |
When button is released (assuming no other controls changed):
| Data-LSB |
|--------------------------|
| Status | CC-Num | Value |
|--------|--------|--------|
| 0xB4 | 0x26 | 0x00 |
Transmit:
Panel Control 0x00
Receive:
FX Edit 0x01
FX Control Map 0x02
Transmit
NRPN-MSB 0x00
NRPN-LSB Pad Mode
DATA-MSB Control [Category:Index]
DATA-LSB Value
PadModes:
Part Mute 0x00
Part Solo 0x01
Part Erase 0x02
Trigger 0x03
Sequencer 0x04
Keyboard 0x05
Chord 0x06
Step Jump 0x07
Pattern Assign 0x08
Pattern Set 0x09
Sample Edit
Step Edit
Categories:
Transport + navigation 0x0
Pad Mode 0x1
Buttons 0x3
Encoders 0x4
Controls [Cat:Idx]:
LSB DataMSB DataLSB
Transport + nav:
Rec PadMode 0x00 0x00|0x7f # Data Entry
Stop PadMode 0x01
Play/Pause PadMode 0x02
Tap PadMode 0x03
Gate Arp PadMode 0x04
Touch Scale PadMode 0x05
Master FX PadMode 0x06
MFX Hold PadMode 0x07
Back PadMode 0x08
Menu PadMode 0x09
Shift PadMode 0x0a
Left PadMode 0x0b
Forward PadMode 0x0c
Exit PadMode 0x0d
Write PadMode 0x0e
Right PadMode 0x0f
Pad Mode Buttons:
Part Mute PadMode 0x10
Part Erase PadMode 0x11
Trigger PadMode 0x13
Sequencer PadMode 0x15
Keyboard PadMode 0x17
Chord PadMode 0x18
Step Jump PadMode 0x19
Pattern Set PadMode 0x1b
Buttons:
Amp EG PadMode 0x30
IFX On PadMode 0x31
LPF PadMode 0x32
HPF PadMode 0x34
BPF PadMode 0x36
MFX Send PadMode 0x3a
B1 PadMode 0x3c
B2 PadMode 0x3d
B3 PadMode 0x3e
B4 PadMode 0x3f
Encoders:
Main Enc PadMode 0x40 Ignore # Data Inc / Data Dec
Osc PadMode 0x41
Filter PadMode 0x42
Modulation PadMode 0x43
IFX PadMode 0x44
It's probably easier to edit FX using ht-cli
than to send NRPN directly.
Receive
NRPN-MSB 0x01
NRPN-LSB FX Slot (0x00-0x20, 2 per part, one for MFX)
DATA-MSB Parameter Index
DATA-LSB Value
See FX Preset Editing to get details of available parameters.
Receive
NRPN-MSB 0x02
NRPN-LSB FX Slot (0x00-0x20, 2 per part, one for MFX)
DATA-MSB FX Control Map parameter index
DATA-LSB FX Control Map parameter value
FX Control Map parameters:
Index Parameter Values
0 Map slot 0-9 (10 slots per preset).
1 Source Control See below.
2 Target param Index of parameter in FX preset.
3 Min value Value when source control is at minimum.
4 Max value Value when source control is at maximum.
FX Map source controls:
Index Control
1 MFX XY Pad touched
2 MFX X | IFX Edit
3 MFX Y
4 MFX X Upper | IFX Edit Upper
5 MFX X Lower | IFX Edit Lower (Inverted, 0=Max value)
6 MFX Y Upper
7 MFX Y Lower (Inverted, 0=Max value)
10 Play / Start (Writes MAX value on sequence start, useful to reset phase).