Sound Stage is a macOS prototype for arranging real app audio into a simple spatial stage.
Status: developer preview / technical MVP. The project is currently run from Swift Package Manager and is intended for prototyping, technical review, and low-level audio iteration. It is not yet packaged, signed, notarized, or distributed as a downloadable macOS app.
The app focuses on real per-process Core Audio capture:
- independent source volume
- mute and solo
- draggable 2D stage placement with preset shortcuts: Center, Left, Right, Left Front, Right Front, Left Rear, Right Rear, Far, Muted
- three scene profiles: Work, Focus, Media
- persisted source preferences
- menu bar mini panel quick controls
- per-source quality modes: Reference, Hi-Fi, Spatial, and Spatial+
- experimental Core Audio process discovery and stereo process tap capture for real app audio on macOS 14.2+
- macOS 14.2 or later
- Xcode Command Line Tools with Swift 6 support
- System audio capture permission for process taps
swift run SoundStagePrototypeswift testThe current build has one input path:
Process Tap: an experimental Core Audio path that scans active output processes, creates a private stereo process tap for one process, and feeds that stream through a lower-coloration direct stereo mixer.
Process taps require macOS 14.2+ and system audio capture permission.
The real-audio path prioritizes fidelity over dramatic spatialization: stereo program material is preserved, reverb and obstruction coloring are bypassed by default outside the Spatial+ experiment, and the generated test tones/mock sources have been removed. Reference mode uses unity gain for a 100% center source, a 100% main mixer, and no captured-audio limiter so A/B listening is as close as this process-tap route can make it. Hi-Fi mode keeps the protective headroom, source trim, and limiting used for mixed-source listening. The process-tap buffer tracks the tap device sample rate, linearly resamples into the app render rate when needed, and reports native/resampling status plus buffered latency and underrun/overrun counts while a tap is running.
Spatial mode is opt-in per source and does not replace the Reference or Hi-Fi direct stereo route. Meeting and chat sources use a point-source HRTF route for clear placement. Browser, music, and game sources use a virtual stereo speaker pair: the captured left and right channels are read by independent mono cursors, rendered as separate HRTF point sources, and offset around the selected stage coordinate. Spatial+ is an experimental A/B profile that keeps the same process-tap path but maps placement through azimuth-first coordinates, rotates stereo pairs around the source direction, and adds a very light externalization reverb blend. The main window includes a Listening Lab control for quickly pinning active sources to the left in Reference, Spatial, or Spatial+. Source placement is draggable and head-relative for now; there is no head tracking or room-locked AirPods-style scene simulation yet.
The app stays intentionally small while the low-level audio path is refined. Scan for currently audible apps, start a process tap, then place the real source on the stage.
- packaged
.appbuild output - code signing or notarization
- installer, DMG, or GitHub Release artifacts
- onboarding for audio capture permissions
- head tracking or room-locked spatial rendering