Skip to content

abhaymundhara/SoundGate

Repository files navigation

SoundGate

SoundGate is a native macOS per-application audio routing console. It is structured as a SwiftUI control plane around CoreAudio discovery, per-process mixer state, output routing, and call-processing presets.

Current Build

  • Native SwiftUI macOS app built with Swift Package Manager.
  • Per-app volume, mute, route, and EQ preset controls.
  • Routing matrix for assigning apps to output destinations.
  • CoreAudio reachability check with an explicit virtual-driver status.
  • Driver install callout that reveals DriverKit/SoundGateDriver.pkg when a signed package is available.
  • Per-app control path based on CoreAudio process taps and private aggregate devices, following the same architecture used by FineTune.
  • Tests covering mixer state behavior.

Driver Boundary

macOS does not expose public APIs that let an ordinary sandboxed GUI app intercept and reroute all process audio by PID. Full system-wide capture and routing requires a signed virtual audio driver or system extension, an installer, entitlements, and user approval. This repo keeps that boundary explicit:

  • CoreAudioRoutingService owns device discovery and future driver integration.
  • MixerStore owns app-facing state transitions.
  • The SwiftUI surface remains independent of the driver implementation.

Driver Installer

Build the local driver package:

./script/build_driver_pkg.sh

Install it:

open DriverKit/SoundGateDriver.pkg

The package installs the HAL plug-in at:

/Library/Audio/Plug-Ins/HAL/SoundGate.driver

The package is ad-hoc signed and unsigned at the package layer for local development. A production build still needs Developer ID signing and notarization.

The app now uses macOS CoreAudio process taps for per-app volume/routing. The local HAL package remains a virtual output device scaffold; the live per-app path is driven from the app process via AudioHardwareCreateProcessTap, a private aggregate device, and an IO callback that applies gain before writing to the selected output.

Build

swift build
swift test
./script/build_and_run.sh --verify

About

SoundGate is a native macOS per‑application audio routing console that lets you inspect, control, and reroute audio streams on a per‑app basis using a SwiftUI interface backed by CoreAudio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors