Summary
The Allen & Heath CQ is a digital mixer controllable via MIDI over USB-B or MIDI over TCP/IP (network port 51325). This spec covers the MIDI messaging surface documented for scene recall, Soft Key trigger, mute, level, pan/balance, and value-query functions using NRPN messages on MIDI Channel 1.
Transport
# Source describes two physical transports: USB-B (MIDI device) and TCP/IP (MIDI over
# TCP/IP). USB MIDI uses the OS MIDI driver stack (no baud/serial params). TCP/IP MIDI
# listens on port 51325. No login / handshake / auth procedure is documented.
protocols:
- tcp
- udp # inferred: MIDI over TCP/IP can be carried via UDP per RTP-MIDI; source only states TCP/IP framing
# NOTE: source explicitly names "MIDI over TCP/IP". Listed as `tcp` per Tier 1 mapping.
addressing:
port: 51325
auth:
type: none # inferred: no auth procedure in source
Worked note — USB transport: MIDI-over-USB-B requires no port or addressing fields; the host enumerates the CQ as a USB MIDI class device. Baud rate, parity, data bits not applicable.
Traits
- queryable # inferred from "Getting values" NRPN get pattern (B0 60 7F)
- levelable # absolute + relative level NRPN control documented
- routable # panning / balance NRPN control documented
Actions
# Source uses MIDI Channel 1 (0xB0 for CC/NRPN). All commands below carry status byte 0xB0.
# Each NRPN is a 4-message sequence: MSB (B0 63 MB), LSB (B0 62 LB), data entry coarse or
# data increment/decrement (B0 06 VC / B0 26 VF / B0 60 00 / B0 61 00).
# --- Scene change ---
- id: scene_recall
label: Scene Recall
kind: action
command: "B0 00 00 C0 {PG}"
params:
- name: PG
type: integer
description: Program change value 00-7F (selects scenes 1-128; CQ offset is -1 vs MIDI)
notes: |
Bank change B0 00 00 should be sent first (always bank 1 = 00). Blank scenes cannot
be recalled. Examples: Scene 1 = `B0 00 00 C0 00`; Scene 7 = `B0 00 00 C0 06`;
Scene 64 = `B0 00 00 C0 3F`.
# --- Soft Key trigger ---
- id: softkey_press
label: Soft Key Press
kind: action
command: "90 {SK} 7F"
params:
- name: SK
type: integer
description: Soft Key note number (SoftKey 1 = 0x30 / C3, +1 per key)
notes: Note-on with velocity 0x7F.
- id: softkey_release
label: Soft Key Release
kind: action
command: "80 {SK} 00"
params:
- name: SK
type: integer
description: Soft Key note number (SoftKey 1 = 0x30 / C3, +1 per key)
notes: Note-off; CQ also accepts note-on with zero velocity as release.
# --- Mute On/Off (NRPN) ---
- id: mute_on
label: Mute On
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 06 00 B0 26 01"
params:
- name: MB
type: integer
description: Mute MSB parameter number (see Mute Parameter table)
- name: LB
type: integer
description: Mute LSB parameter number (see Mute Parameter table)
notes: NRPN = (MB, LB). Examples: Ip1 Mute On = `B0 63 00 B0 62 00 B0 06 00 B0 26 01`.
- id: mute_off
label: Mute Off
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 06 00 B0 26 00"
params:
- name: MB
type: integer
description: Mute MSB parameter number
- name: LB
type: integer
description: Mute LSB parameter number
notes: Example: Main LR Mute Off = `B0 63 00 B0 62 44 B0 06 00 B0 26 00`.
- id: mute_toggle_increment
label: Mute Toggle (Increment)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 60 00"
params:
- name: MB
type: integer
description: Mute MSB parameter number
- name: LB
type: integer
description: Mute LSB parameter number
notes: |
Increment with data byte 0x00 toggles mute state. Source states this cannot currently
be used with DCA Mute and Mute Group Mute. Example: Ip3 Mute Toggle =
`B0 63 00 B0 62 02 B0 60 00`.
# --- Level (absolute) ---
- id: level_set_absolute
label: Set Level (Absolute)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 06 {VC} B0 26 {VF}"
params:
- name: MB
type: integer
description: Level MSB parameter number (see Level Parameter table)
- name: LB
type: integer
description: Level LSB parameter number
- name: VC
type: integer
description: Value coarse (see Example Level Values table)
- name: VF
type: integer
description: Value fine (see Example Level Values table)
notes: |
Examples: Ip1 to Main LR 0dB = `B0 63 40 B0 62 00 B0 06 62 B0 26 00`;
Ip1 to Main LR -20dB = `B0 63 40 B0 62 00 B0 06 2E B0 26 40`;
Out 5/6 (overall) +5dB = `B0 63 4F B0 62 05 B0 06 73 B0 26 40`.
# --- Level (relative) ---
- id: level_increment_1db
label: Level Increment (+1dB)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 60 00"
params:
- name: MB
type: integer
description: Level MSB parameter number
- name: LB
type: integer
description: Level LSB parameter number
notes: NRPN Fader Law setting has no effect on relative control.
- id: level_decrement_1db
label: Level Decrement (-1dB)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 61 00"
params:
- name: MB
type: integer
description: Level MSB parameter number
- name: LB
type: integer
description: Level LSB parameter number
# --- Pan/Balance (absolute) ---
- id: pan_set_absolute
label: Set Pan/Balance (Absolute)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 06 {VC} B0 26 {VF}"
params:
- name: MB
type: integer
description: Pan MSB parameter number (see Pan/Balance Parameter table)
- name: LB
type: integer
description: Pan LSB parameter number
- name: VC
type: integer
description: Value coarse, 00 00 (L100%) to 7F 7F (R100%), 40 00 = center
- name: VF
type: integer
description: Value fine
notes: |
Examples: Ip1 to LR Center = `B0 63 50 B0 62 00 B0 06 40 B0 26 00`;
Ip1 to LR L100% = `B0 63 50 B0 62 00 B0 06 00 B0 26 00`;
Ip1 to LR R100% = `B0 63 50 B0 62 00 B0 06 7F B0 26 7F`.
# --- Pan/Balance (relative) ---
- id: pan_increment_right
label: Pan Right One Step (Increment)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 60 00"
params:
- name: MB
type: integer
description: Pan MSB parameter number
- name: LB
type: integer
description: Pan LSB parameter number
- id: pan_decrement_left
label: Pan Left One Step (Decrement)
kind: action
command: "B0 63 {MB} B0 62 {LB} B0 61 00"
params:
- name: MB
type: integer
description: Pan MSB parameter number
- name: LB
type: integer
description: Pan LSB parameter number
notes: Increment moves right; decrement moves left.
# --- Get value (query) ---
- id: value_get
label: Get Parameter Value
kind: query
command: "B0 63 {MB} B0 62 {LB} B0 60 7F"
params:
- name: MB
type: integer
description: Parameter MSB (mute / level / pan as appropriate)
- name: LB
type: integer
description: Parameter LSB
notes: |
CQ responds with current value of mute, level, or pan/balance parameter.
Examples: Ip1 Mute = `B0 63 00 B0 62 00 B0 60 7F`;
Ip1 to LR Level = `B0 63 40 B0 62 00 B0 60 7F`;
ST1 to Out 1/2 Pan = `B0 63 52 B0 62 64 B0 60 7F`.
Feedbacks
# CQ transmits MIDI when UI/app changes any NRPN-controlled parameter (Section 1.2).
# No explicit unsolicited event structure is documented beyond the same NRPN
# form used to send - values are echoed back as standard NRPN messages.
# UNRESOLVED: response byte format / response-on-get echo structure not given in source.
Variables
# Parameter number tables from source. These are read-only reference data; treat as
# documentation rather than settable device variables.
- name: mute_parameter_numbers
description: |
MSB/LSB pairs for mute control. Channels: Ip1-Ip16 (00 00-00 0F), St1/St2 (00 18, 00 1A),
USB (00 1C), BT (00 1E), FX1-FX4 (00 51-00 54), Main LR (00 44), Out1-Out6 (00 45-00 4A),
Out1/2 (00 45), Out3/4 (00 47), Out5/6 (00 49), DCA1-DCA4 (02 00-02 03),
MGRP1-MGRP4 (04 00-04 03).
- name: level_parameter_numbers
description: |
MSB/LSB pairs for level control. Inputs/FX -> outputs table (Section 3) gives
one row per (source, destination) pair; Outputs/FX/DCA overall use MSB 4F with
varying LSB (e.g. Main LR 4F 00, Out1 4F 01, DCA1 4F 20).
- name: pan_balance_parameter_numbers
description: |
MSB/LSB pairs for pan/balance. Inputs/FX -> LR/Out1/2/Out3/4/Out5/6. Examples:
Ip1->LR 50 00, Ip1->Out1/2 50 44, Ip1->Out3/4 50 46, Ip1->Out5/6 50 48.
- name: level_value_table
description: |
Linear-taper dB -> (VC, VF) coarse/fine byte pairs. Range -inf (00 00) to +10dB (7F 40).
See "Example Level Values" table in source.
- name: pan_value_table
description: |
Pan coarse/fine byte pairs. L100% = 00 00; CTR = 40 00; R100% = 7F 7F.
- name: softkey_notes
description: |
SoftKey note numbers. SoftKey 1 = C3 = 0x30; increments by 1 per key.
Source documents SK1=30, SK2=31, SK3=32; full list UNRESOLVED in refined doc.
Events
# UNRESOLVED: source states CQ transmits NRPN messages on parameter change but does
# not document a distinct event/notification message format separate from regular NRPN.
Macros
# UNRESOLVED: no macro / sequence definitions in source.
Safety
confirmation_required_for: []
interlocks: []
# Source warning: "Avoid creating a MIDI feedback loop by sending the CQ MIDI output
# back to the CQ when recording MIDI data." - operational note, not a device interlock.
# UNRESOLVED: no explicit safety warnings, interlocks, or power-on sequencing in source.
Notes
- Source describes MIDI Channel 1 for all control messaging (Section 1.3).
- Source header states "Firmware V1.2 Issue 4"; not pinned in
compatible_with.firmwarebecause the operator did not supply it and the refined doc treats it as a doc revision label rather than a per-device firmware gate. - Operator-supplied "Known protocol: RS-232C" conflicts with source content (MIDI over USB-B / TCP/IP only). RS-232 framing, baud rate, parity not documented in source.
- Only one TCP/IP MIDI connection permitted at a time (Section 1.1).
- MIDI-over-TCP/IP port: 51325.
- Bank change
B0 00 00should precede program change for scene recall; blank scenes cannot be recalled. - Mute Toggle (increment variant) cannot currently be used with DCA Mute or Mute Group Mute.
- NRPN Fader Law setting does not affect relative level control.
- "Follow Main LR Pan" must be set to Off for MIDI control of panning to Linked Stereo Outputs.
- The CQ does not send note on/off messages when a Soft Key is pressed (receive-only for SoftKeys).
Provenance
source_domains:
- allen-heath.com
source_urls:
- https://www.allen-heath.com/content/uploads/2024/10/CQ_MIDI_Protocol_V1_2_0_iss4.pdf
- https://www.allen-heath.com/content/uploads/2024/06/CQ_MIDI_Protocol_V1_2_0_iss1.pdf
retrieved_at: 2026-07-13T19:00:50.435Z
last_checked_at: 2026-07-21T20:11:35.271Z
Verification Summary
verdict: verified
checked_at: 2026-07-21T20:11:35.271Z
matched_actions: 13
action_count: 13
confidence: medium
summary: "All 13 spec actions have literal hex-code matches in source with correct parameter structure. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "operator-supplied \"Known protocol\" was RS-232C, but source describes MIDI over USB / TCP/IP only. No RS-232 / serial parameters are documented. Firmware version (referenced in source header as \"V1.2 Issue 4\") not pinned in compatible_with."
- "response byte format / response-on-get echo structure not given in source."
- "source states CQ transmits NRPN messages on parameter change but does"
- "no macro / sequence definitions in source."
- "no explicit safety warnings, interlocks, or power-on sequencing in source."
- "firmware compatibility range not stated per-device; full SoftKey note table beyond SK1-SK3 not present in refined excerpt; exact response byte layout on Get-value queries not documented."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0