{
  "_sources": [
    {
      "type": "vendor-doc",
      "url": "https://www.korg.com/us/support/download/manual/0/367/2666/",
      "notes": "KORG 'electribe MIDI Implementation' Revision 1.00 (Jan. 9 2015), file electribe_MIDIimp.txt (posted 2016.01.08) on the electribe (2014, ELECTRIBE2) download page. The electribe sampler has its own separate document and is not covered.",
      "firmware": "unknown",
      "imported_at": "2026-10-25"
    }
  ],
  "_limitations": "Firmware: the document (rev. 1.00, Jan. 2015) names no system version; the current updater is 2.02. The parameter CCs act on 'the' part without saying which; the document defines one Global MIDI channel and no per-part channels, so which part a CC or note reaches is not stated here. Only the 17 panel parameters have CCs; oscillator type, filter type, modulation type, IFX type, groove, voice assign, master FX type, tempo, swing, scale, step data and motion sequences live only inside the pattern dump (Table 1, 16384 bytes, 7-bit packed as 18725 bytes), which this driver can request and the device returns as /sysex/raw, but cannot edit field by field. Pattern change needs three messages (CC0 = 0, CC32 = 0/1, Program Change); patterns 128-250 use LSB 1 with program 01~79H (1-121), which as printed covers 121 programs for 123 patterns. Pattern numbers in SysEx: '0~FA = Pattern No. 001-250' is ambiguous (251 values) and is passed as given. Left out: Global Data Dump Request, whose function byte is 0EH in the function list but 1EH in the message format; sending data dumps (40H, 4CH, 51H) back to the device, which needs the 7-bit packing (NOTE 3) and is for the librarian, not a driver command. No NRPN and no parameter-change SysEx exist in the document.",
  "device": {
    "name": "electribe 2 (EMX 2)",
    "vendor": "KORG",
    "revision": "electribe MIDI Implementation rev. 1.00 (2015-01-09); system version not stated",
    "osc_prefix": "/electribe_2_emx_2",
    "manufacturer_id": [
      66
    ],
    "device_id": [
      0,
      1,
      35
    ],
    "rate_limit_hz": 1000
  },
  "sysex": {
    "header": [],
    "footer": []
  },
  "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": "/pattern/program",
      "_notes": "Program Change on MIDI channel 1: program 1-127 within the bank set by /pattern/bank_lsb (LSB 0: patterns 001-127; LSB 1: patterns 128-250, program 1-121 as printed). The electribe uses its Global MIDI channel; for another channel use the performance route /program_change {program} {channel}. Received when RECEIVE FILTER is Off or Short.",
      "args": [
        {
          "name": "program",
          "type": "u7",
          "range": [
            1,
            127
          ]
        }
      ],
      "frame": [
        192,
        "{program}"
      ]
    },
    {
      "osc": "/transport/start",
      "_notes": "MIDI Start (FA).",
      "args": [],
      "frame": [
        250
      ]
    },
    {
      "osc": "/transport/continue",
      "_notes": "MIDI Continue (FB).",
      "args": [],
      "frame": [
        251
      ]
    },
    {
      "osc": "/transport/stop",
      "_notes": "MIDI Stop (FC).",
      "args": [],
      "frame": [
        252
      ]
    },
    {
      "osc": "/transport/clock",
      "_notes": "One MIDI Timing Clock tick (F8, 24 per quarter note); followed when Global CLOCK MODE is Auto or External MIDI/USB.",
      "args": [],
      "frame": [
        248
      ]
    },
    {
      "osc": "/system/identity_request",
      "_notes": "Universal Device Inquiry (F0 7E nn 06 01 F7); nn = Global channel 0-15 or 127 (any). Reply: /system/identity_reply.",
      "args": [
        {
          "name": "channel",
          "type": "u7",
          "range": [
            0,
            127
          ],
          "default": 127
        }
      ],
      "frame": [
        240,
        126,
        "{channel}",
        6,
        1,
        247
      ]
    },
    {
      "osc": "/system/search_device",
      "_notes": "KORG Search Device Request (F0 42 50 00 dd F7); dd = echo-back ID copied into the reply /system/search_device_reply.",
      "args": [
        {
          "name": "echo_id",
          "type": "u7",
          "range": [
            0,
            127
          ],
          "default": 0
        }
      ],
      "frame": [
        240,
        66,
        80,
        0,
        "{echo_id}",
        247
      ]
    },
    {
      "osc": "/dump/current_pattern/request",
      "_notes": "Current Pattern Data Dump Request (function 10H). The electribe answers with a Current Pattern Data Dump (40H, 18725 bytes of 7-bit packed data, Table 1) or Data Load Error (24H); dumps arrive as /sysex/raw. channel = Global MIDI channel 0-15 (channel 1-16), default 0.",
      "args": [
        {
          "name": "channel",
          "type": "u7",
          "range": [
            0,
            15
          ],
          "default": 0
        }
      ],
      "pre": [
        {
          "bind": "g",
          "expr": "channel + 48"
        }
      ],
      "frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        16,
        247
      ]
    },
    {
      "osc": "/dump/pattern/request",
      "_notes": "Pattern Data Dump Request, 1 pattern (function 1CH). Answer: Pattern Data Dump (4CH) or Data Load Error (24H). Pattern number as the 14-bit value sent LSB first (bits 6-0) then MSB (bits 13-7). The document says 'PPpp : 0~FA = Pattern No. 001-250', which is 251 values for 250 patterns, so whether 0 means pattern 001 is not settled; the value is sent as given. channel = Global MIDI channel 0-15 (channel 1-16), default 0.",
      "args": [
        {
          "name": "index",
          "type": "u14",
          "range": [
            0,
            250
          ]
        },
        {
          "name": "channel",
          "type": "u7",
          "range": [
            0,
            15
          ],
          "default": 0
        }
      ],
      "pre": [
        {
          "bind": "g",
          "expr": "channel + 48"
        }
      ],
      "frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        28,
        "{index:u14_lsb}",
        "{index:u14_msb}",
        247
      ]
    },
    {
      "osc": "/pattern/write",
      "_notes": "Pattern Write Request (function 11H): writes the current pattern (edit buffer) to the given pattern number in internal memory; overwrites it. Answer: Write Completed (21H) or Write Error (22H). Pattern number as the 14-bit value sent LSB first (bits 6-0) then MSB (bits 13-7). The document says 'PPpp : 0~FA = Pattern No. 001-250', which is 251 values for 250 patterns, so whether 0 means pattern 001 is not settled; the value is sent as given. channel = Global MIDI channel 0-15 (channel 1-16), default 0.",
      "args": [
        {
          "name": "index",
          "type": "u14",
          "range": [
            0,
            250
          ]
        },
        {
          "name": "channel",
          "type": "u7",
          "range": [
            0,
            15
          ],
          "default": 0
        }
      ],
      "pre": [
        {
          "bind": "g",
          "expr": "channel + 48"
        }
      ],
      "frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        17,
        "{index:u14_lsb}",
        "{index:u14_msb}",
        247
      ]
    }
  ],
  "cc_params": {
    "channel": 0,
    "_source": "electribe MIDI Implementation rev. 1.00, 2-1 Recognized Receive Data (Channel Messages).",
    "entries": [
      {
        "osc": "/osc/pitch",
        "cc": 80,
        "range": [
          0,
          127
        ],
        "orientation": "centered",
        "section": "Oscillator",
        "_usage": "*7-3: 0 and 1 = -63, 64 = 0, 127 = +63. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/osc/glide",
        "cc": 81,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Oscillator",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/osc/edit",
        "cc": 82,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Oscillator",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/filter/cutoff",
        "cc": 74,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Filter",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/filter/resonance",
        "cc": 71,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Filter",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/filter/eg_intensity",
        "cc": 83,
        "range": [
          0,
          127
        ],
        "orientation": "centered",
        "section": "Filter",
        "_usage": "*7-3: 0 and 1 = -63, 64 = 0, 127 = +63. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/modulation/depth",
        "cc": 85,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Modulation",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/modulation/speed",
        "cc": 86,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Modulation",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/amp/level",
        "cc": 7,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Amp/EG",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/amp/pan",
        "cc": 10,
        "range": [
          0,
          127
        ],
        "orientation": "centered",
        "section": "Amp/EG",
        "_usage": "*7-2: 0 and 1 = L63, 64 = center, 127 = R63. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/eg/attack",
        "cc": 73,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Amp/EG",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/eg/decay_release",
        "cc": 72,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Amp/EG",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/insert_fx/edit",
        "cc": 87,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Insert FX",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/insert_fx/on",
        "cc": 104,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Insert FX",
        "_usage": "*7-4: 0 = Off, 1-127 = On. Received when Global MIDI RECEIVE FILTER is Off.",
        "expects": "switch"
      },
      {
        "osc": "/master_fx/x",
        "cc": 102,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Master FX",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/master_fx/y",
        "cc": 103,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Master FX",
        "_usage": "*7-1: 0-127. Received when Global MIDI RECEIVE FILTER is Off."
      },
      {
        "osc": "/master_fx/send",
        "cc": 105,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Master FX",
        "_usage": "MFX Send Off/On. *7-4: 0 = Off, 1-127 = On. Received when Global MIDI RECEIVE FILTER is Off.",
        "expects": "switch"
      },
      {
        "osc": "/master_fx/on",
        "cc": 106,
        "range": [
          0,
          127
        ],
        "orientation": "0-based",
        "section": "Master FX",
        "_usage": "Master FX Off/On (XY pad). *7-4: 0 = Off, 1-127 = On. Received when Global MIDI RECEIVE FILTER is Off.",
        "expects": "switch"
      },
      {
        "osc": "/pattern/bank_msb",
        "cc": 0,
        "range": [
          0,
          0
        ],
        "orientation": "0-based",
        "section": "Pattern change",
        "_usage": "Bank Select MSB, always 0. Pattern change = CC0, CC32, then Program Change. Received when RECEIVE FILTER is Off or Short.",
        "expects": "discrete"
      },
      {
        "osc": "/pattern/bank_lsb",
        "cc": 32,
        "range": [
          0,
          1
        ],
        "orientation": "0-based",
        "section": "Pattern change",
        "_usage": "Bank Select LSB: 0 = patterns 001-127 (program 1-127), 1 = patterns 128-250 (program 1-121 as printed). Then send /pattern/program.",
        "expects": "discrete"
      },
      {
        "osc": "/channel/all_sound_off",
        "cc": 120,
        "range": [
          0,
          0
        ],
        "orientation": "0-based",
        "section": "Channel mode",
        "_usage": "Always received.",
        "expects": "trigger"
      },
      {
        "osc": "/channel/reset_all_controllers",
        "cc": 121,
        "range": [
          0,
          0
        ],
        "orientation": "0-based",
        "section": "Channel mode",
        "_usage": "Always received.",
        "expects": "trigger"
      },
      {
        "osc": "/channel/all_notes_off",
        "cc": 123,
        "range": [
          0,
          0
        ],
        "orientation": "0-based",
        "section": "Channel mode",
        "_usage": "Always received.",
        "expects": "trigger"
      }
    ]
  },
  "replies": [
    {
      "match_frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        35,
        247
      ],
      "emit_osc": "/sysex/data_load_completed {g}",
      "_notes": "Argument = the header byte 3g, i.e. 48 + Global MIDI channel (0-15)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        36,
        247
      ],
      "emit_osc": "/sysex/data_load_error {g}",
      "_notes": "Argument = the header byte 3g, i.e. 48 + Global MIDI channel (0-15)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        33,
        247
      ],
      "emit_osc": "/sysex/write_completed {g}",
      "_notes": "Argument = the header byte 3g, i.e. 48 + Global MIDI channel (0-15)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        34,
        247
      ],
      "emit_osc": "/sysex/write_error {g}",
      "_notes": "Argument = the header byte 3g, i.e. 48 + Global MIDI channel (0-15)."
    },
    {
      "match_frame": [
        240,
        66,
        "{g}",
        0,
        1,
        35,
        38,
        247
      ],
      "emit_osc": "/sysex/data_format_error {g}",
      "_notes": "Argument = the header byte 3g, i.e. 48 + Global MIDI channel (0-15)."
    },
    {
      "match_frame": [
        240,
        126,
        "{channel}",
        6,
        2,
        66,
        35,
        1,
        0,
        0,
        "{major}",
        "{minor}",
        "{release}",
        "{reserved}",
        247
      ],
      "emit_osc": "/system/identity_reply {channel} {major} {minor} {release}"
    },
    {
      "match_frame": [
        240,
        66,
        80,
        1,
        "{channel}",
        "{echo_id}",
        35,
        1,
        1,
        0,
        "{major}",
        "{minor}",
        "{release}",
        "{reserved}",
        247
      ],
      "emit_osc": "/system/search_device_reply {channel} {echo_id} {major} {minor} {release}"
    }
  ],
  "_coverage": {
    "entries_total": 23,
    "cc_entries": 23,
    "nrpn_entries": 0,
    "sysex_commands": 5,
    "realtime_commands": 4,
    "pc_commands": 1,
    "replies": 7
  }
}
