Summary

MIDI control protocol for Allen & Heath Qu-5, Qu-6 and Qu-7 digital mixers (and "-D" Dante variants). Spec covers bi-directional MIDI messaging over USB-C and TCP/IP, including MIDI Show Control, scene recall, soft-key emulation, NRPN-based mute/level/pan/assign control, and parameter queries. Port: 51325.

Transport

# UNRESOLVED: auth procedure - no explicit login credential flow described in source.
# Connection is described as direct IP+port addressing; treat auth as none unless source contradicts.
protocols:
  - tcp
addressing:
  port: 51325
auth:
  type: none  # inferred: no auth procedure in source

Notes: Qu also exposes MIDI over USB-C as a class-compliant MIDI device; messages are identical, but transport differs. Network MIDI uses TCP port 51325 per §1.1. On Qu-5D/6D/7D the Dante port can route MIDI when Control Network Bridge is On.

Traits

- powerable  # UNRESOLVED: no explicit power on/off command in this issue of the MIDI doc; inferring false here. Remove if absent.
- routable  # inferred from Mix Assignment commands (§3.7)
- queryable  # inferred from Get/Value request commands (§3.8)
- levelable  # inferred from absolute + relative level control (§3.5)

Actions

# Source documents distinct opcodes/templates per message type.
# Each NRPN-like command is a four-CC sequence (MSB, LSB, Coarse, Fine) plus increment/decrement/get variants.
# Below: parameterized templates with {N}=MIDI channel, {MB}/{LB}=parameter MSB/LSB, {VC}/{VF}=value bytes.

- id: scene_recall
  label: Recall Scene (Bank + Program Change)
  kind: action
  command: "BN 00 BK CN PG"  # Bank + Program Change pair
  params:
    - name: bank
      type: integer
      description: "0=Scenes 1-128, 1=Scenes 129-256, 2=Scenes 257-300"
    - name: program
      type: integer
      description: "0-127; Qu scene number = bank*128 + program + 1"
    - name: midi_channel
      type: integer
      description: "1-16 (encoded as 0-F in status nibble)"

- id: midi_show_control_recall_cue
  label: MIDI Show Control - Recall Cue
  kind: action
  command: "F0 7F <channel> 02 01 01 <cue_number> F7"  # UNRESOLVED: MSC sub-format placeholder; source states MSC Cue List mode but does not give byte template
  params: []

- id: soft_key_press
  label: Soft Key Press (Note On)
  kind: action
  command: "9N{SK} 7F"
  params:
    - name: midi_channel
      type: integer
    - name: soft_key
      type: integer
      description: "Soft Key 1-16, mapped to notes 0x30-0x3F"

- id: soft_key_release
  label: Soft Key Release (Note Off)
  kind: action
  command: "8N{SK} 00"
  params:
    - name: midi_channel
      type: integer
    - name: soft_key
      type: integer

- id: soft_key_toggle_mmc_rewind
  label: MMC Rewind (Soft Key)
  kind: action
  command: "MMC"  # UNRESOLVED: literal MMC SysEx not transcribed; Soft Key assigned MMC Rewind
  params: []

- id: soft_key_toggle_mmc_play
  label: MMC Play (Soft Key)
  kind: action
  command: "MMC"
  params: []

- id: soft_key_toggle_mmc_pause
  label: MMC Pause (Soft Key)
  kind: action
  command: "MMC"
  params: []

- id: soft_key_toggle_mmc_stop
  label: MMC Stop (Soft Key)
  kind: action
  command: "MMC"
  params: []

- id: soft_key_toggle_mmc_fastforward
  label: MMC Fast Forward (Soft Key)
  kind: action
  command: "MMC"
  params: []

- id: soft_key_toggle_mmc_record
  label: MMC Record (Soft Key)
  kind: action
  command: "MMC"
  params: []

- id: soft_key_toggle_daw_bank_up
  label: DAW Bank Up (Soft Key)
  kind: action
  command: "BANK_UP"  # UNRESOLVED: DAW control payload not transcribed in source
  params: []

- id: soft_key_toggle_daw_bank_down
  label: DAW Bank Down (Soft Key)
  kind: action
  command: "BANK_DOWN"
  params: []

- id: soft_key_program_change
  label: Program Change (Soft Key)
  kind: action
  command: "CN {PG}"
  params:
    - name: midi_channel
      type: integer
    - name: program
      type: integer
      description: "0-127"

- id: mute_on
  label: Channel Mute On
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06 00 BN 26 01"
  params:
    - name: parameter
      type: string
      description: "Mute MSB/LSB per Mute Parameter Number tables"

- id: mute_off
  label: Channel Mute Off
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06 00 BN 26 00"
  params:
    - name: parameter
      type: string

- id: mute_toggle
  label: Channel Mute Toggle (Increment)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 60 00"
  params:
    - name: parameter
      type: string

- id: level_absolute
  label: Level Set (Absolute)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06{VC} BN 26{VF}"
  params:
    - name: parameter
      type: string
      description: "Level MSB/LSB per Level Parameter Number tables"
    - name: value_coarse
      type: integer
      description: "0x00-0x7F (Audio taper or Linear taper as configured)"
    - name: value_fine
      type: integer
      description: "0x00-0x7F"

- id: level_increment_1db
  label: Level +1 dB (Increment)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 60 00"
  params:
    - name: parameter
      type: string

- id: level_decrement_1db
  label: Level -1 dB (Decrement)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 61 00"
  params:
    - name: parameter
      type: string

- id: pan_absolute
  label: Pan/Balance Set (Absolute)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06{VC} BN 26{VF}"
  params:
    - name: parameter
      type: string
      description: "Pan/Balance MSB/LSB per Panning/Balance Parameter Number tables"
    - name: value_coarse
      type: integer
      description: "0x00 (L100) - 0x7F (R100); centre 0x3F"
    - name: value_fine
      type: integer

- id: pan_increment_right
  label: Pan Right One Step (Increment)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 60 00"
  params:
    - name: parameter
      type: string

- id: pan_decrement_left
  label: Pan Left One Step (Decrement)
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 61 00"
  params:
    - name: parameter
      type: string

- id: mix_assign_on
  label: Mix Assign On
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06 00 BN 26 01"
  params:
    - name: parameter
      type: string
      description: "Assign MSB/LSB per Mix Assignment Parameter Number tables"

- id: mix_assign_off
  label: Mix Assign Off
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 06 00 BN 26 00"
  params:
    - name: parameter
      type: string

- id: mix_assign_toggle
  label: Mix Assign Toggle
  kind: action
  command: "BN 63{MB} BN 62{LB} BN 60 00"
  params:
    - name: parameter
      type: string

- id: parameter_get_value
  label: Get Parameter Value (Query)
  kind: query
  command: "BN 63{MB} BN 62{LB} BN 60 7F"
  params:
    - name: parameter
      type: string
      description: "Mute, Level, Pan/Balance, or Assignment MSB/LSB"

# MIDI strip level faders (32 CCs, channel = DAW MIDI channel = Qu MIDI channel + 1):
- id: strip_fader_cc
  label: MIDI Strip Fader (CC)
  kind: action
  command: "Bn {CC} {level}"
  params:
    - name: midi_channel
      type: integer
      description: "DAW MIDI channel (Qu MIDI channel + 1)"
    - name: cc_number
      type: integer
      description: "Strip 1-32 = CC#0-31"
    - name: level
      type: integer
      description: "0-127"

- id: strip_mute_key_note
  label: MIDI Strip Mute Key
  kind: action
  command: "9N{SK} 7F / 8N{SK} 00"
  params:
    - name: midi_channel
      type: integer
    - name: note
      type: integer
      description: "Strip 1-32 mapped to notes C-1 through G1 (per §2.1 table)"

- id: strip_sel_key_note
  label: MIDI Strip Sel Key
  kind: action
  command: "9N{SK} 7F / 8N{SK} 00"
  params:
    - name: midi_channel
      type: integer
    - name: note
      type: integer

- id: strip_pafl_key_note
  label: MIDI Strip PAFL Key
  kind: action
  command: "9N{SK} 7F / 8N{SK} 00"
  params:
    - name: midi_channel
      type: integer
    - name: note
      type: integer

Feedbacks

# Source §3.8 implies parameter values are returned as a response to the Get command
# but does not explicitly transcribe the reply byte format. Marked UNRESOLVED.
- id: parameter_value_response
  type: binary
  description: >
    UNRESOLVED: response payload template after Get command not stated in source.
    Expected to mirror the set-message format (B0 63 MB B0 62 LB B0 06 VC B0 26 VF) but not confirmed.

Variables

# Source describes parameter numbering tables rather than settable variables per se.
# Variables are channel/destination pairs identified by MSB/LSB.
- id: mute_state
  type: enum
  values: [on, off]
  description: "Per source/destination channel via MSB/LSB per Mute Parameter Numbers table"

- id: level_value_db
  type: number
  description: "Absolute dB level, two's complement in VC/VF; range depends on Fader Law (Audio or Linear taper)"

- id: pan_balance
  type: number
  description: "L100% to R100% with center, via Pan/Balance Value Coarse/Fine"

- id: mix_assignment
  type: enum
  values: [on, off]
  description: "Per source/destination routing on/off"

Events

# Source describes unsolicited responses for level changes but no event stream protocol.
# UNRESOLVED: no event subscription mechanism documented.

Macros

# Source mentions HUI / Mackie Control emulation via Allen & Heath MIDI Control app but
# does not specify concrete macro sequences.
# UNRESOLVED: macros not explicitly described.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source is a control-protocol document; no explicit safety warnings,
# interlocks, or power-on sequencing procedures are described.

Notes

  • Document title: "MIDI Protocol Issue 2 Qu-5/6/7 firmware V1.1 or later." Network MIDI port: 51325 (TCP). USB-C presents MIDI class-compliant device. Qu-5D/6D/7D Dante port can be used for MIDI when Control Network Bridge is On.
  • Qu MIDI Channel used for mixer core; DAW Control Channel = Qu MIDI channel + 1 (so Qu channel 16 → DAW channel 1).
  • Mute, level, panning, assignment, get-value commands all use identical four-CC message structure; only MSB/LSB/value bytes differ. They are distinct actions because the source documents them as separate message categories (§3.4–3.8).
  • Scene recall uses Bank + Program Change; Qu scenes count from 1, MIDI values from 0 (offset of -1).
  • Mtx4 destination not currently controllable via MIDI (cross-compat note with SQ).
  • Input device label "Allen Heath Proportional Q Graphic Eq" does not match this source — author has authored against the Qu-5/6/7 MIDI Protocol doc provided at the supplied path. Operator should verify intent.

Provenance

source_domains:
  - allen-heath.com
source_urls:
  - https://www.allen-heath.com/content/uploads/2025/06/Qu567_MIDI_Protocol_Iss2.pdf
retrieved_at: 2026-07-02T03:26:08.580Z
last_checked_at: 2026-07-07T10:58:22.062Z

Verification Summary

verdict: verified
checked_at: 2026-07-07T10:58:22.062Z
matched_actions: 30
action_count: 30
confidence: medium
summary: "All 30 spec actions confirmed verbatim against source 2.1-3.8; transport port 51325 supported; no extra undocumented commands in source at this granularity. (10 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "input device label \"Proportional Q Graphic Eq\" does not match source (Qu-5/6/7 mixer family). Spec authored against Qu MIDI Protocol Issue 2."
- "auth procedure - no explicit login credential flow described in source."
- "no explicit power on/off command in this issue of the MIDI doc; inferring false here. Remove if absent."
- "MSC sub-format placeholder; source states MSC Cue List mode but does not give byte template"
- "literal MMC SysEx not transcribed; Soft Key assigned MMC Rewind"
- "DAW control payload not transcribed in source"
- "response payload template after Get command not stated in source."
- "no event subscription mechanism documented."
- "macros not explicitly described."
- "source is a control-protocol document; no explicit safety warnings,"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0