AntennaHead
macOS app · companion

ControlBooth

The unsandboxed companion to AntennaHead. It runs user-defined process pipelines — tool piped into tool via stdin/stdout — and delivers the resulting PCM audio to AntennaHead over UDP for streaming.

Why a separate app

AntennaHead is sandboxed and ships only fixed, known-good pipelines. Arbitrary command-line tools — unsigned Homebrew binaries included — can't run inside that sandbox. ControlBooth (ENABLE_APP_SANDBOX = NO) is where that freedom lives, so AntennaHead stays locked down.

Pipeline editor

Chain executables left to right; each stage's stdout feeds the next stage's stdin. A structured argument editor with a helper catalog and validation keeps stages well-formed.

Automatic delivery

ControlBooth appends PCMUDPSender --exit-with-parent as the final stage, sending raw S16LE PCM to AntennaHead (default port 6019), which forwards it to LiveAudioServer.

Example: HD Radio

nrsc5 → sox for HD Radio, or any decoder chain you can express on a command line — without the manual terminal juggling.

Shared internals

Uses the same PipelineHelpers runner, SharedLogging viewer, and AirPlayReceiver as AntennaHead.

Devices hub

ControlBooth also owns the embedded AirPlay receiver and the cross-app Devices page.

Ducking & mixing

Sidechain ducking (PCMMixer --duck-input) lets announcements or a live mix drop the main audio underneath them.

Screen recordings

ControlBooth is a native SwiftUI app (no browser UI), so these are desktop captures.

Building an nrsc5 → sox pipeline and sending it to AntennaHead.
The structured argument editor with helper catalog and validation.

Get it

ControlBooth checks out as a sibling of AntennaHead — use the antennahead-workspace bootstrap for the local-package layout.

github.com/dsward2/ControlBooth →

Latest release: v0.1.0-alpha (pre-release) — direct download (.zip, signed & notarized)