0001 — Native REAC, not AES67, for Roland stageboxes
Status: Accepted (designed; the audio path lives in the sibling reac-pw repo)
Date: 2026-06-29
Context
openmixer's first real rig takes its I/O from one or two Roland REAC stageboxes (for example the S-1608): mic inputs in, the mixed PA feed out. There are three ways to get that audio onto and off the host:
- A Roland M-5000 console acting as the REAC master, bridged to the host somehow.
- Convert REAC to AES67 (or Dante) with a hardware or software gateway, and run the mixer on the standardised stream.
- Speak native REAC directly — the Roland stagebox's own Layer-2 protocol
(
EtherType 0x8819).
A Roland stagebox without a console expects a REAC master to clock it and exchange frames. It does not speak AES67. Converting would mean buying or building a gateway, adding a clock domain crossing, and adding latency — to talk a protocol the box does not natively use, when the box already speaks one we have reverse-engineered.
The REAC receive path already exists and works: reac-pw's reac:capture decodes live
REAC into a 40-channel PipeWire source today. A REAC frame encoder exists and is
verified by a round-trip test.
Decision
For Roland stageboxes, the correct wire is native REAC. openmixer receives REAC as a PipeWire source and sends the mix back as a PipeWire sink that re-encodes native REAC to the stagebox outputs. No M-5000 console and no AES67/Dante conversion in the path.
What remains to drive a real stagebox (designed, not yet built): the master-role
JOIN/HOLD handshake (cdea establishment + heartbeat) so the box locks to openmixer as
its master, and a SCHED_FIFO cadence pacer that emits frames at a rock-steady rate so
the box stays locked without clicks.
Consequences
- No gateway hardware, no extra clock-domain crossing, minimal added latency — the stagebox connects to the mixing host's NIC and nothing else.
- It commits us to maintaining a native REAC implementation (
libreac/reac-pw), including the master handshake and an RT-grade egress pacer. This is real systems work and is the main remaining gap in the audio core. - It needs raw L2 socket access (
AF_PACKET,CAP_NET_RAW) on the mixing host, which shapes deployment (the audio host, not a generic cluster node). - AES67/Dante are not foreclosed: they remain valid for other I/O endpoints and are first-class targets of the discovery layer (0012); this decision is specifically about how to talk to a Roland stagebox.