Skip to content

v1.0.6: Allen & Heath console support (Qu, SQ, Avantis/dLive/GLD) and discovery/DCA fixes#19

Merged
johnqherman merged 6 commits into
masterfrom
v1.0.6
Jul 14, 2026
Merged

v1.0.6: Allen & Heath console support (Qu, SQ, Avantis/dLive/GLD) and discovery/DCA fixes#19
johnqherman merged 6 commits into
masterfrom
v1.0.6

Conversation

@johnqherman

Copy link
Copy Markdown
Collaborator

No description provided.

Qu shares the SQ MIDI-over-TCP control path (same A&H 'Soft' family, port
51325); all Qu models run the same 32-channel DSP and differ only in fader
count. Adds ConsoleType::Qu16/24/32, capabilities, QuProtocol (reusing the SQ
MIDI base), ProtocolFactory wiring, protocolId lookups, and allSupported so the
console picker lists them. Verified against the official A&H SQ MIDI Protocol.
Recovered the real discovery wire contracts from the reference firmware and
corrected every probe:
- WING: raw 'WING?' to UDP 2222 (was an OSC probe the console ignores); parse
  the 'WING,<ip>,<name>,<model>,<serial>,<fw>' reply.
- X32/M32: parse all OSC /xinfo args so M32 is no longer misdetected as X32.
- Yamaha: replace the non-functional OSC/8000 probe with the real YSDP datagram
  on UDP 54330 (control stays SCP/TCP 49280).
- Allen & Heath SQ/dLive/Avantis: two-stage discovery - broadcast the per-family
  'Find' strings to UDP 51320, then an async TCP identify (SQ 51326 binary,
  dLive/Avantis 51321 SysEx) to resolve the model.

Adds a raw-datagram + TCP-identify probe mechanism to ConsoleDiscoveryService
(AnyIPv4 bind, per-interface broadcast, unicast probeHost fallback), a
testable processDatagram seam, and a full discovery test suite.
Verified against the official A&H SQ MIDI Protocol (Firmware V2.0.3):
- Scene recall was emitting a GLD-style SysEx; the SQ/Qu/GLD MIDI interface uses
  Bank Select (CC0) + Program Change (1-based scene, banks of 128). e.g. scene
  156 -> B0 00 01 C0 1B.
- DCA fader NRPN LSB base was 0x20 (invented); the Level table gives 0x67
  (DCA1=0x67..DCA8=0x6E). Input level (MSB 0x40), input/DCA mutes, and the 4-CC
  NRPN framing were already correct and are now covered by byte-exact tests.

The fader value is a 14-bit position; the console applies its own NRPN Fader
Law (Linear/Audio Taper), so the linear encoding is the documented behaviour.
…Live/GLD)

Replaces the invented [len][type][float] stub with the actual A&H property
protocol recovered byte-exact from the reference firmware:
- F0..F7 length-prefixed framing; subscribe-by-name handshake that learns each
  object's 2-byte handle from the reply; SET frames F0 00 00 <handle> 00 00
  <op> <idx> 00 <disc> <val> F7.
- Channel level/mute, DCA mute, scene recall with per-console opcodes (Avantis
  0x25/0x26, dLive 0x30/0x31), firmware-gated variants (+6/+8), and dLive
  bank/spill addressing (op 0x12).
- Exact per-0.1 dB lookup tables (not a formula), distinct per family.
- GLD moved onto its real property protocol (op 0x16, own dB table) with a
  secondary MIDI socket for scene-recall MMC, matching the reference two-socket
  design; capabilities updated to ACE-TCP 51321.
- DCA fader dropped (receive-only in the reference). Firmware wired from the
  discovered console. Byte-exact tests for every frame and both dB tables.
@johnqherman
johnqherman merged commit beae91a into master Jul 14, 2026
5 checks passed
@johnqherman
johnqherman deleted the v1.0.6 branch July 14, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant