Skip to content
bangcorrupt edited this page Jul 5, 2023 · 14 revisions

NRPN

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   |

CC Values

NRPN Categories

Transmit:

    Panel Control       0x00


Receive:

    FX Edit             0x01
    FX Control Map      0x02

Panel Control

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

FX Edit

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.


FX Control Map

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).