{
  "_sources": [
    {
      "type": "vendor-doc",
      "url": "https://archive.org/details/manualzilla-id-7356606",
      "notes": "ENSONIQ ASR-10 Musician's Manual: Section 2 Edit/System-MIDI parameters (pedal, base channel, MIDI in modes, receiving program changes), Section 4 (patch select buttons) and Section 17 Sequencing/MIDI Applications (external MIDI clock). Every route comes from these pages.",
      "firmware": "unknown",
      "imported_at": "2026-10-26"
    }
  ],
  "_limitations": "Source: ASR-10 Musician's Manual, MIDI chapters (no MIDI implementation chart or SysEx specification in it). Pitch bend, mod wheel, pressure (key or channel), volume and sustain are sent and received when MIDI CONTROLLERS=ON, but the manual numbers only controllers #4, #7 and #70; MIDI XCTRL NUMBER (0-127) picks one more external controller as a modulator. MIDI IN MODE (OMNI, POLY, MULTI, MONO A, MONO B) and the base channel decide what is received; in MONO modes the base channel minus one carries global controllers. Program change meanings depend on the mode (selection/stack/presets versus file loads, directory exit and macros). Song Select 0-127 is sent when a song is loaded. Remote programming and WaveSample dumps exist over SysEx (MIDI SYS-EX=ON) but their format is not in this manual, so none is exposed. Untested on hardware.",
  "_coverage": {
    "entries_total": 13,
    "cc_entries": 3,
    "rpn_entries": 0,
    "nrpn_entries": 0,
    "sysex_commands": 0,
    "realtime_commands": 4,
    "channel_and_common_commands": 6,
    "note_triggers": 0,
    "replies": 0
  },
  "device": {
    "name": "ASR-10",
    "vendor": "Ensoniq",
    "revision": "ASR-10 Musician's Manual (MIDI chapters)",
    "osc_prefix": "/asr_10",
    "manufacturer_id": [
      15
    ],
    "device_id": []
  },
  "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": "/instrument/{instrument}/select",
      "section": "Program change",
      "args": [
        {
          "name": "instrument",
          "type": "u7",
          "range": [
            1,
            8
          ]
        }
      ],
      "_notes": "Program change 1-8 (as numbered in the manual, 00-07H): selects instrument 1-8, or deselects it if already selected. Received on the base channel (channel 1 here) when MIDI PROG CHANGE=ON and MIDI IN MODE is OMNI, POLY or MONO A. For another channel use /program_change {program} {channel}.",
      "pre": [
        {
          "bind": "_p",
          "expr": "instrument - 1"
        }
      ],
      "frame": [
        192,
        "{_p}"
      ]
    },
    {
      "osc": "/instrument/{instrument}/stack",
      "section": "Program change",
      "args": [
        {
          "name": "instrument",
          "type": "u7",
          "range": [
            1,
            8
          ]
        }
      ],
      "_notes": "Program change 9-16 (08-0FH): stacks instrument 1-8. Received on the base channel (channel 1 here) when MIDI PROG CHANGE=ON and MIDI IN MODE is OMNI, POLY or MONO A. For another channel use /program_change {program} {channel}.",
      "pre": [
        {
          "bind": "_p",
          "expr": "instrument + 7"
        }
      ],
      "frame": [
        192,
        "{_p}"
      ]
    },
    {
      "osc": "/preset/{preset}/select",
      "section": "Program change",
      "args": [
        {
          "name": "preset",
          "type": "u7",
          "range": [
            1,
            8
          ]
        }
      ],
      "_notes": "Program change 17-24 (10-17H): selects performance preset 1-8. Received on the base channel (channel 1 here) when MIDI PROG CHANGE=ON and MIDI IN MODE is OMNI, POLY or MONO A. For another channel use /program_change {program} {channel}.",
      "pre": [
        {
          "bind": "_p",
          "expr": "preset + 15"
        }
      ],
      "frame": [
        192,
        "{_p}"
      ]
    },
    {
      "osc": "/storage/exit_directory",
      "section": "Program change",
      "args": [],
      "_notes": "Program change 1 (00H): exit to the previous directory. In MULTI or MONO B mode, on the track's MULTI-IN MIDI channel (channel 1 here; other channels with /program_change {program} {channel}).",
      "frame": [
        192,
        0
      ]
    },
    {
      "osc": "/storage/load_file/{file}",
      "section": "Program change",
      "args": [
        {
          "name": "file",
          "type": "u7",
          "range": [
            1,
            99
          ]
        }
      ],
      "_notes": "Program change = file number + 1 (programs numbered 1-128, so the data byte is the file number): loads that instrument or bank file from the current storage device into the track; press Load first. In MULTI or MONO B mode, on the track's MULTI-IN MIDI channel (channel 1 here; other channels with /program_change {program} {channel}).",
      "frame": [
        192,
        "{file}"
      ]
    },
    {
      "osc": "/macro/{macro}/run",
      "section": "Program change",
      "args": [
        {
          "name": "macro",
          "type": "u7",
          "range": [
            0,
            27
          ]
        }
      ],
      "_notes": "Program change 101-128 (64-7FH): invokes macro 0-27. In MULTI or MONO B mode, on the track's MULTI-IN MIDI channel (channel 1 here; other channels with /program_change {program} {channel}).",
      "pre": [
        {
          "bind": "_p",
          "expr": "macro + 100"
        }
      ],
      "frame": [
        192,
        "{_p}"
      ]
    },
    {
      "osc": "/transport/clock",
      "section": "Sync",
      "args": [],
      "_notes": "MIDI clock (F8H). Followed when Edit/Seq-Song CLOCK SOURCE=MIDI.",
      "frame": [
        248
      ]
    },
    {
      "osc": "/transport/start",
      "section": "Sync",
      "args": [],
      "_notes": "MIDI Start (FAH): recording begins with the first clock after Start. Followed when Edit/Seq-Song CLOCK SOURCE=MIDI.",
      "frame": [
        250
      ]
    },
    {
      "osc": "/transport/stop",
      "section": "Sync",
      "args": [],
      "_notes": "MIDI Stop (FCH). Followed when Edit/Seq-Song CLOCK SOURCE=MIDI.",
      "frame": [
        252
      ]
    },
    {
      "osc": "/transport/continue",
      "section": "Sync",
      "args": [],
      "_notes": "MIDI Continue (FBH). Followed when Edit/Seq-Song CLOCK SOURCE=MIDI.",
      "frame": [
        251
      ]
    }
  ],
  "cc_params": {
    "channel": 0,
    "_source": "ASR-10 Musician's Manual, Sections 2 and 4.",
    "entries": [
      {
        "osc": "/pedal",
        "cc": 4,
        "range": [
          0,
          127
        ],
        "section": "Controllers",
        "_usage": "CV pedal as modulator (PEDAL=MOD): sent and received as controller #4."
      },
      {
        "osc": "/volume",
        "cc": 7,
        "range": [
          0,
          127
        ],
        "section": "Controllers",
        "_usage": "Volume (PEDAL=VOLUME or volume slider): controller #7 on the selected instrument-sequence track."
      },
      {
        "osc": "/patch_select",
        "cc": 70,
        "range": [
          0,
          127
        ],
        "expects": "discrete",
        "section": "Controllers",
        "_usage": "Patch select buttons, sent and received as controller #70 (the manual does not print which values stand for left, right or both)."
      }
    ]
  }
}
