{
  "_sources": [
    {
      "type": "vendor-doc",
      "url": "https://www.korg.com/us/support/download/manual/0/161/2716/",
      "notes": "KORG 'padKONTROL MIDI Implementation ( Native Mode )' 2005.08.25 (padKONTROL_MIDIimp.txt on the padKONTROL download page): universal and padKONTROL SysEx, native KORG mode messages, scene and global dump tables. Every route comes from this file.",
      "firmware": "unknown",
      "imported_at": "2026-10-26"
    }
  ],
  "_limitations": "Source: padKONTROL MIDI Implementation (Native Mode), 2005. Outside native mode the padKONTROL sends what its scene assigns (notes, CCs, bend, aftertouch per TABLE 1); those arrive through the performance routes. Native-mode Packet Communication 1 and 2 (command 3F, 38 and 17 data bytes, TABLES 3-4) and sending scene or global dumps back (func 40/51, packed data) are not exposed: their payloads are whole tables. Dumps are requested only and arrive as /sysex/raw. The document does not name the switches behind numbers 00-12 nor the LEDs 10-22 and 30-47 one by one. Untested on hardware.",
  "_coverage": {
    "entries_total": 10,
    "cc_entries": 0,
    "rpn_entries": 0,
    "nrpn_entries": 0,
    "sysex_commands": 10,
    "realtime_commands": 0,
    "channel_and_common_commands": 0,
    "note_triggers": 0,
    "replies": 15
  },
  "device": {
    "name": "padKONTROL",
    "vendor": "KORG",
    "revision": "padKONTROL MIDI Implementation (Native Mode), 2005.08.25",
    "osc_prefix": "/padkontrol",
    "manufacturer_id": [
      66
    ],
    "device_id": [
      110,
      8
    ]
  },
  "sysex": {
    "header": [],
    "footer": [],
    "_notes": "Empty on purpose: each command frame carries its complete message."
  },
  "midi_out": {
    "default_channel": 0,
    "note_offset": 0
  },
  "midi_in": {
    "note_on": "/note/on {note} {velocity} {channel}",
    "note_off": "/note/off {note} {velocity} {channel}",
    "cc": "/cc/{num} {value} {channel}",
    "program_change": "/program_change {program} {channel}"
  },
  "commands": [
    {
      "osc": "/identity/request",
      "section": "Universal SysEx",
      "args": [],
      "_notes": "Universal Identity Request (F0 7E 7F 06 01 F7). Device Inquiry; the padKONTROL answers with an Identity Reply.",
      "frame": [
        240,
        126,
        127,
        6,
        1,
        247
      ]
    },
    {
      "osc": "/native/enter",
      "section": "Native mode",
      "args": [],
      "_notes": "Native KORG mode In/Out Request, qq = 01 (In). The padKONTROL answers 'Native KORG mode In/Out' (03 = In). In native mode its scene settings are ignored and every pad, switch, knob and LED is handled by the host. Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        0,
        0,
        1,
        247
      ]
    },
    {
      "osc": "/native/exit",
      "section": "Native mode",
      "args": [],
      "_notes": "Native KORG mode In/Out Request, qq = 00 (Out). Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        0,
        0,
        0,
        247
      ]
    },
    {
      "osc": "/native/led",
      "section": "Native mode",
      "args": [
        {
          "name": "led",
          "type": "u7",
          "range": [
            0,
            71
          ]
        },
        {
          "name": "state",
          "type": "enum",
          "values": {
            "Off": 0,
            "On": 1,
            "OneShot": 2,
            "Blink": 3
          },
          "range": [
            0,
            3
          ]
        },
        {
          "name": "timer",
          "type": "u7",
          "range": [
            0,
            31
          ]
        }
      ],
      "_notes": "Native mode Display LED (received in native mode): led 00-0F = pads 1-16, 10-22 = switch LEDs, 30-47 = 7-segment LED segments; state 0 Off, 1 On, 2 OneShot, 3 Blink; timer = OneShot time in 9 ms steps (0-31). Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "pre": [
        {
          "bind": "_e",
          "expr": "state * 32"
        },
        {
          "bind": "_et",
          "expr": "_e + timer"
        }
      ],
      "frame": [
        240,
        66,
        64,
        110,
        8,
        1,
        "{led}",
        "{_et}",
        247
      ]
    },
    {
      "osc": "/native/display",
      "section": "Native mode",
      "args": [
        {
          "name": "blink",
          "type": "u7",
          "range": [
            0,
            1
          ]
        },
        {
          "name": "c1",
          "type": "u7",
          "range": [
            32,
            127
          ]
        },
        {
          "name": "c2",
          "type": "u7",
          "range": [
            32,
            127
          ]
        },
        {
          "name": "c3",
          "type": "u7",
          "range": [
            32,
            127
          ]
        }
      ],
      "_notes": "Native mode Display LCD (the three-character 7-segment LED): blink 0 Off / 1 On, then the left, centre and right characters as ASCII codes 20H-7FH. Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        34,
        4,
        "{blink}",
        "{c1}",
        "{c2}",
        "{c3}",
        247
      ]
    },
    {
      "osc": "/dump/current_scene/request",
      "section": "Data dump",
      "args": [],
      "_notes": "Current Scene Data Dump Request (func 10); the answer is the scene dump (func 40, TABLE 1) or an error (24, 26). Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        31,
        16,
        0,
        247
      ]
    },
    {
      "osc": "/dump/global/request",
      "section": "Data dump",
      "args": [],
      "_notes": "Global Data Dump Request (func 0E); the answer is the global dump (func 51, TABLE 2) or Data Load Error. Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        31,
        14,
        0,
        247
      ]
    },
    {
      "osc": "/scene/write",
      "section": "Scene",
      "args": [
        {
          "name": "scene",
          "type": "u7",
          "range": [
            0,
            15
          ]
        }
      ],
      "_notes": "Scene Write Request (func 11): writes the edit buffer to scene 0-15; answers Scene Change then Write Completed / Write Error. Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        31,
        17,
        "{scene}",
        247
      ]
    },
    {
      "osc": "/scene/change",
      "section": "Scene",
      "args": [
        {
          "name": "scene",
          "type": "u7",
          "range": [
            0,
            15
          ]
        }
      ],
      "_notes": "Scene Change Request (func 14): selects scene 0-15; answers Scene Change then Data Load Completed / Error. Built for global MIDI channel 1 (3rd byte 40H = 4g, g = 0).",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        31,
        20,
        "{scene}",
        247
      ]
    },
    {
      "osc": "/port_detect/request",
      "section": "Ports",
      "args": [
        {
          "name": "port",
          "type": "u7",
          "range": [
            1,
            127
          ]
        }
      ],
      "_notes": "Port Detect Request (command 1E) to the padKONTROL (sub ID 08; the document also allows 7F = all-call and any channel 4x): port = the host's port number 1-127, echoed in the Port Detect answer.",
      "frame": [
        240,
        66,
        64,
        110,
        8,
        30,
        0,
        "{port}",
        247
      ]
    }
  ],
  "replies": [
    {
      "match_frame": [
        240,
        126,
        "{g}",
        6,
        2,
        66,
        110,
        0,
        8,
        0,
        "{min_lsb}",
        "{min_msb}",
        "{maj_lsb}",
        "{maj_msb}",
        247
      ],
      "emit_osc": "/identity/reply {g} {maj_lsb} {maj_msb} {min_lsb} {min_msb}",
      "_notes": "Identity Reply: family 6E 00 (Software Project), member 08 00 (padKONTROL), minor then major version."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        64,
        0,
        "{state}",
        247
      ],
      "emit_osc": "/native/state {state}",
      "_notes": "Native KORG mode In/Out: 02 = Out, 03 = In."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        67,
        0,
        "{delta}",
        247
      ],
      "emit_osc": "/native/encoder {delta}",
      "_notes": "Encoder Output (native mode): 40H-7FH, 00H-3FH = -64..0..+63."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        69,
        "{pad_state}",
        "{velocity}",
        247
      ],
      "emit_osc": "/native/pad {pad_state} {velocity}",
      "_notes": "Pad Output (native mode): pad_state = 0c00nnnn (c 0 off / 1 on, nnnn = pad 1-16 as 0-15, so 0-15 off, 64-79 on); velocity 1-127 on, 64 off."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        71,
        0,
        "{value}",
        247
      ],
      "emit_osc": "/native/pedal {value}",
      "_notes": "Pedal Output (native mode), 0-127."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        72,
        "{switch}",
        "{value}",
        247
      ],
      "emit_osc": "/native/switch {switch} {value}",
      "_notes": "SW Output (native mode): switch 00-12 = panel switches, 20 = X-Y pad switch; value 0 off, 127 on."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        73,
        "{knob}",
        "{value}",
        247
      ],
      "emit_osc": "/native/knob {knob} {value}",
      "_notes": "Knob Output (native mode): knob 0 = Knob1, 1 = Knob2; value 0-127. The document prints this header with 02 (KONTROL49) as the 5th byte; matched here with the padKONTROL sub ID 08 its message structure defines."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        75,
        "{x}",
        "{y}",
        247
      ],
      "emit_osc": "/native/xy {x} {y}",
      "_notes": "X-Y Pad Output (native mode): x and y 0-127."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        79,
        "{scene}",
        247
      ],
      "emit_osc": "/scene/changed {scene}",
      "_notes": "Scene Change completed: scene 0-15."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        35,
        0,
        247
      ],
      "emit_osc": "/sysex/data_load_completed",
      "_notes": "Data Load Completed (ACK)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        36,
        0,
        247
      ],
      "emit_osc": "/sysex/data_load_error",
      "_notes": "Data Load Error (NAK)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        33,
        0,
        247
      ],
      "emit_osc": "/sysex/write_completed",
      "_notes": "Write Completed."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        34,
        0,
        247
      ],
      "emit_osc": "/sysex/write_error",
      "_notes": "Write Error."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        110,
        8,
        95,
        38,
        0,
        247
      ],
      "emit_osc": "/sysex/data_format_error",
      "_notes": "Data Format Error (e.g. wrong data length)."
    },
    {
      "match_frame": [
        240,
        66,
        "{ch}",
        110,
        8,
        126,
        5,
        "{port}",
        3,
        2,
        2,
        2,
        247
      ],
      "emit_osc": "/port_detect {ch} {port}",
      "_notes": "Port Detect: host port echoed; 3 IN ports (dedicated 2), 2 OUT ports (dedicated 2)."
    }
  ]
}
