Stoatworks Labs

Hardware · Discipline

Audio

Consoles, amplifiers, radio mics and the copper between them — the parts of an audio system that cannot be solved in software.

Every board here started as a job that software could not finish. A control application that already runs on the laptop but cannot reach amplifiers that only speak CAN. A console whose channel count is set by how many DSP chips somebody soldered down five years ago. Sixteen microphone lines that have to cross a stage on one cable and come back out as XLRs, wired to a convention nobody publishes.

None of those are protocol problems, and writing more software at them does not help. They are made of connectors, filters, grounds and heat — so the answer is a board, and the board has to be honest about which parts of it have been measured.

4 boards · none fabricated yet

Audio · IP and USB to CAN bus converter

dbCANary

Rev A laid out · connector fixed, re-route outstanding

An IP and USB to CAN bus converter for use with the d&b amplifier ecosystem. It puts amplifiers that only speak CAN onto the network, so the control software you already run can discover and drive them - through hardware you can build yourself.

  • Transparent bridgeNo interpretation and no extra protocol layer. The gateway is invisible to the control application, which is the entire point of it.
  • Protocol solvedVerified against the real control software: it is discovered, it connects, and it drives the bus.
  • Standard partsESP32-S3, W5500 Ethernet, ADM3053 isolated CAN. Nothing exotic, nothing unobtainable.
  • Bench test rigA board self-test image, a test script that runs in simulation, and generated probe-point renders for bring-up.

Honest status

The protocol work is verified against real hardware, but the firmware has never executed on a board and rev A is not orderable yet. The USB-C connector was found placed 180 degrees out - and since the board is USB-C powered only, it could never have powered up as drawn. It has since been rotated and moved onto the board edge, which tore up the nets around it: 17 connections still need re-routing, and every fab package needs regenerating, before anything is made.

dbCANary rev A board, isometric render
Rev A board, isometric render
dbCANary rev A board, top view render
Top view
MCU
ESP32-S3
Network
W5500 Ethernet
Bus
ADM3053 isolated CAN, 100 kbit/s
Role
IP and USB to CAN bus converter
For
The d&b amplifier ecosystem
Repo
Private

Audio · 1U passive Cat-to-XLR fan-out

etherCON Stagebox Fan-out

Design complete · gerbers generated, nothing fabricated

A passive 1U fan-out: four etherCON in, sixteen XLR out on flying tails, four balanced channels per Cat run. The signal path is fully passive and DC-coupled, so phantom power crosses it untouched. Each unit is self-contained, so 32 channels is two of them and 48 is three - rather than one crowded chassis nobody can rack beside anything.

  • One board, every system on the marketFour balanced channels on four twisted pairs is settled. Which channel lands on which pair, and which end of it is hot, is not - there are nine catalogued schemes and they are mutually incompatible. Here every XLR lands on its own three-way terminal block that is hard-wired to exactly one pair, so channel order is which tail you plug in where and polarity is which way round two wires sit. Both are screwdriver jobs, and neither touches the PCB.
  • Five of the nine need no work at allThe hot position is fed from the even pin of every pair - which is exactly what the E in an AES72 type code means. Every E-type variant is therefore pure relabelling. The mixed types need three terminals swapping per port and the fully inverted ones four: about a minute with a screwdriver.
  • Four screen islands, deliberately isolatedEach Cat run's screen is its own ground, meeting the star point only through its own lift link. There are no copper pours anywhere on this board, because one continuous fill would short all four together and still pass every continuity test you would think to run.
  • A wrong pinout cannot scrap a boardThe map is in copper, but every degree of freedom that map fixes is undone at a terminal block. A mis-transcribed pinout costs a screwdriver, not a fab run - which matters, because half the published maps in this corner of the industry disagree with each other.
  • Nothing to alignThe etherCONs are chassis-mounted and reach the board on a flying link, so panel-to-PCB registration - normally the thing that ruins a first build - simply does not apply.

Adapting it to somebody else's stagebox

The default build is wired to one convention. Every other system on the market is the same board with the tails moved, and for five of the nine catalogued types not even that. This is the whole build sheet:

SystemAES72 typeTo build that variant
the sssnake Cat Snake1ENothing - this is the default build
Neutrik AES72 stagebox4ENothing but relabelling: same wires, different tail into each block
Whirlwind Catdusa1MThree terminals reversed per port
Radial Catapultno AES72 typeThree terminals reversed per port, channel order reversed
SoundTools CAT Box2OAll four terminals reversed per port

Radial matches none of the nine because they number channels from the far end of the connector - it is Type 1M with the channel order reversed. Only a scheme that split one channel across two pairs would need different copper, and no catalogued type does that.

The nine types, every manufacturer's map, and what happens when you mix two systems

Honest status

Design complete, DRC clean, fabrication package generated - and nothing has been made. The real open risk is the pinout itself: the convention the default build is wired to is published nowhere by the manufacturer whose snakes it is meant to meet, so the map is community-sourced and passes the twisted-pair sanity check rather than having been metered. Put a meter on a real Cat snake before you make up sixteen tails. It cannot waste a board - a wrong map is a screwdriver fix - but it can waste an evening. The other hard requirement is the cable: the screen is the only pin-1 conductor, so on unshielded Cat phantom power cannot work at all.

Block diagram: four etherCON inputs, each splitting into four twisted pairs feeding four three-way terminal blocks, out to sixteen XLR tails; each port's screen goes to its own isolated island and reaches the star point through its own lift link
One port of four - and why the pinout is a screwdriver job
Format
1U, 4x etherCON in, 16x XLR out
Channels
4 balanced per Cat run, 16 per unit
Signal path
Passive, DC-coupled - phantom passes through
As built
AES72 Type 1E; all nine types by rewiring
Board
380 x 72 mm, 2-layer, all through-hole
Grounding
4 isolated screen islands, one lift link each
Cable
Shielded Cat - mandatory, not advisory
Repo
Private

RF & wireless · Antenna pair over one Cat cable

UHF Pair Extender

Front-end board placed · routing next

Remotes a wireless-mic receive antenna pair over a single shielded Cat cable. Filtering, gain and line drivers at the antenna end; balun, slope equalisation and a matched step attenuator pair at the rack end. 470-698 MHz, A/B diversity preserved, one cable instead of two coax runs down the side of a stage.

  • Diversity stays diversityEach antenna gets its own individually screened pair. With a single overall screen, pair-to-pair crosstalk at 500 MHz is 30-40 dB, which couples antenna A into B and destroys the independence the receiver's diversity logic depends on - silently.
  • Noise figure is the whole design0.97 dB system noise figure at any attenuator setting, because the step attenuator sits after the line driver rather than mid-chain. The same parts mid-chain give 11.8 dB.
  • The preselector is split on purposeLow-loss filtering before the first LNA, where its 0.46 dB lands directly on noise figure; the lossy LTE traps after 20 dB of gain, where 3.3 dB costs a hundredth as much. Worth 2.8 dB of sensitivity for no extra parts.
  • No AGC, everReceivers derive squelch thresholds and diversity decisions from absolute RF level. Gain is measured once at commissioning and then frozen. A running loop that holds a target level is a defect here, not a feature.
  • Power gets its own pairWideband UHF transformers rate around 30 mA and the head needs roughly 200 mA, so the DC feed rides the one pair that is split at the connector and therefore useless for signal anyway. Never parallel two pairs for one RF signal: cable delay skew puts comb nulls inside the passband.

Honest status

Three boards, and the one being built first is not a product. The front-end characterisation board is a single-channel test board that exists to decide whether either production board works, because it can be measured with a VNA and one receiver - its schematic is ERC-clean and all 43 footprints are placed, but it is not routed and nothing has been fabricated. The head unit's schematics are roughly 80% drawn; the rack unit is an empty project. Every figure quoted above is a budget computed from datasheet numbers, not a measurement, and the point of the first board is to find out which of them are true.

Block diagram: A and B receive antennas into a head unit containing a split preselector either side of an LNA, a line driver and a balun; one shielded Cat cable carrying RF on two pairs, DC on one and RS-485 on one; a rack unit with balun, slope equaliser and a step attenuator pair feeding the receiver
Antenna to receiver, and what each cable pair carries
Band
470-698 MHz, A/B diversity
Cable
One S/FTP Cat run: 2 RF pairs, 1 DC, 1 RS-485
Front end
Split preselector either side of the first LNA
Gain block
QPL9547 LNA, TCM2-33WX+ balun
Level control
PE4312 step attenuator, both channels one control word
Boards
Head, rack, and a front-end characterisation board
Stack-up
4-layer, impedance controlled, 50 ohm microstrip
Repo
Private

Audio · FPGA-native live mixing console

LOOM

DSP core bit-exact under Verilator

An open, FPGA-native live mixing console. 128 inputs, 64 buses, every channel strip computed in fabric at 96 kHz - speaking Dante, RAVENNA/AES67 and AVB/Milan simultaneously, with an x86 sidecar for VST3 hosting and NPU-accelerated ML audio.

  • Everything in fabric128 in, 64 bus, 32-bit fixed-point Q4.27 with a 59-bit accumulator. No DSP chips to run out of.
  • Three AoIP stacks at onceDante native on-die, AES67/RAVENNA and AVB/Milan in the PL - concurrently, not one at a time.
  • Latency-aligned routingA full 192x64 crosspoint where any input reaches any output in the same sample count, whatever the route depth.
  • Verified, not assertedA fixed-point Rust reference model pins the arithmetic, and the SystemVerilog is checked bit-exact against it.
  • A smart layer that is optionalML feedback prediction and noise reduction on a Hailo-8, fed feature vectors computed in fabric.

Honest status

The fixed-point model and the biquad and TDM cores are built and verified bit-exact under Verilator. That is a long way from a console: no board exists, and nothing has run on an FPGA.

LOOM
No render yet — design is on paper and in simulation
Platform
AMD Zynq UltraScale+ XCZU7EV (ZCU106)
Channels
128 in / 64 bus @ 96 kHz
Format
Q4.27 fixed-point, 59-bit accumulator
AoIP
Dante + AES67/RAVENNA + Milan
Local I/O
192 in / 192 out (analog, AES3, MADI)
Repo
Private

UHF Pair Extender is also on RF & Wireless

The grounding is the design

Analogue audio hardware fails in a particular way: it works on the bench, passes a continuity test, and is quietly wrong on site. The fan-out is the clearest example on this page — its four cable screens are four separate grounds, each meeting the star point only through its own lift link, and a single reflexive copper pour would short all four together while every test you are likely to run still passes. So that board has no pours at all, anywhere.

The same instinct runs through the rest. dbCANary isolates the CAN side because a bus that leaves the rack has no business sharing a ground with the thing driving it. LOOM's arithmetic is pinned against a fixed-point reference model rather than checked by ear. The pattern is that the failure modes worth engineering against are the silent ones.

What exists, and what is paper

Nothing on this page has been built. The fan-out is the furthest along: design complete, DRC clean, fabrication package generated — and no board ordered. dbCANary has a laid-out rev A with a connector fix that tore up seventeen nets and has not been re-routed. LOOM's DSP core is bit-exact under Verilator, which is a long way from a console: no board exists and nothing has run on an FPGA.

Each section below says which is which in its own words. Where a number is a budget from datasheet figures rather than a measurement, it says that too — the difference matters more in audio than almost anywhere, because a design that is 3 dB out is still a design that works, right up until somebody counts on the last 3 dB.

The whole bench

This is one discipline of several

The hardware index carries every board at once, filterable by discipline — lighting nodes, audio boxes, video processing, the physical layer under all of it, and the RF work above it.