Now live · v0.1 · macOS 14.2+

Per-app volume
for macOS.
Finally.

Independent volume sliders for every app producing audio. Music, Zoom, Chrome — drive them separately from one beautiful panel. Auto-ducks media when someone speaks on a call.

Free · MIT licensed · < 1% CPU · No telemetry

SonicFlow
2 apps playing
Master85%
⏷ Ducking active — Music lowered 50%
Music 62%↓
zoom
zoom.us 95%

Volume for every app.
Independent. Fast. Free.

Built with CoreAudio Process Taps on macOS 14.2+. Audio routes through a lock-free realtime IOProc — gain changes apply in under 10 ms.

🎚️

Per-app sliders

Every app currently making sound gets its own slider. Drag to attenuate in real time.

🔇

One-click mute

Tap any app's icon to mute it instantly. A red badge tells you which apps are silenced.

📢

Auto-ducking

When Zoom, Teams, or Slack speaks, your music quiets automatically. Adjustable amount.

🎛️

Master + system sync

The master slider drives macOS system volume — and follows F11/F12 keyboard keys.

Under 1% CPU

Realtime DSP done right. Lock-free SPSC ring buffer, allocation-free IOProcs.

🪟

Menu bar only

No Dock icon, no window on launch. Just a waveform glyph in your menu bar.

🎤

No purple mic dot

SonicFlow never requests microphone permission. Process Taps capture output, not input.

📖

Open source

MIT licensed. Inspect the IOProc, file an issue, ship a PR. Zero telemetry.

How it actually works

No magic. Real CoreAudio APIs. Real Swift code you can read.

1

Detect every audio process

SonicFlow watches kAudioHardwarePropertyProcessObjectList. Whenever an app starts producing output, you see it appear in the panel within ~1 second.

2

Tap each app's audio stream

For each active app, SonicFlow creates a CATapDescription with CATapMutedWhenTapped — the app's normal output is silenced; its audio gets routed to our private aggregate device.

3

Apply gain in a realtime IOProc

A capture IOProc reads each tap's input, multiplies by the per-app gain (the slider value), mixes to stereo, writes to a lock-free ring buffer. Zero allocation, zero locks on the audio thread.

4

Play back through your speakers

A second IOProc on your real default output device reads from the ring buffer and adds the gained samples to the output — mixed with any non-tapped audio that goes through the system mixer normally.

Install in 30 seconds

Requires macOS 14.2 or newer. Apple Silicon and Intel.

# Option A — download the .app bundle $ curl -L -o SonicFlow.zip \ https://github.com/altuzar/sonicflow/releases/latest/download/SonicFlow.zip $ unzip SonicFlow.zip $ mv SonicFlow.app /Applications/ $ open /Applications/SonicFlow.app # Option B — build from source $ git clone https://github.com/altuzar/sonicflow.git $ cd sonicflow $ make sign $ open build/SonicFlow.app

FAQ

Does it trigger the macOS recording indicator?

No purple dot — that's microphone access, which SonicFlow never requests. Process Taps are output-capture, not input. On macOS 14.4+ you may briefly see the orange audio-capture indicator, same as SoundSource / Audio Hijack.

Why isn't this just built into macOS?

Apple ships per-app volume on iOS but not macOS. There's no public macOS UI for it. SonicFlow uses the same low-level APIs Apple gives third-party audio devs and builds the UI Apple didn't.

Does it work with Bluetooth headphones / AirPods?

Yes. The playback IOProc binds to whatever your current default output device is. Headphone hot-swap support is on the roadmap — for now, restart the app after changing output.

What about audio quality?

Lossless — gain is a single floating-point multiply per sample, with soft-clipping to prevent overshoot. Bit-perfect for non-tapped apps (they go through the system mixer unchanged).

How is this different from SoundSource?

SoundSource is a polished commercial product ($39). SonicFlow is free, open-source, and focused on the core "per-app volume + ducking" use case. If you need EQ, audio routing, or recording, buy SoundSource.

Will it slow down my Mac?

Idle CPU is 0.0%. With taps active, ~1% on M-series. The ring buffer is lock-free SPSC, the IOProcs are allocation-free.

Where's the code?

All ~2,400 lines of Swift live at github.com/altuzar/sonicflow. MIT licensed. Read it, fork it, ship PRs.