Skip to content

manuxstack/sound-bar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

macOS 14.2+ Swift 5.9 MIT License Apple Silicon | Intel

Sound Bar

Free, open-source per-app volume mixer for macOS — from the menu bar.
Windows-style volume control for Mac · No drivers · No kernel extensions · 100% native Swift

Features · Preview · Install · Permissions · How it works · Development

Sound Bar mixer popover with per-app volume sliders

Menu bar popover — independent volume for every app playing audio


The problem

macOS gives you one volume slider for everything. Music too loud during a Zoom call? Discord notifications too loud while you work? Your only option is to mute the whole system.

Sound Bar is a lightweight macOS menu bar app that adds a per-application volume mixer — the Windows volume mixer experience, built natively for Mac with Core Audio.

Keywords: macOS volume mixer · per-app volume control · menu bar utility · mute apps individually · audio mixer Mac · Sonoma volume control · Swift open source

Features

Per-app volume

Independent sliders from 0% to 150% for every app. Turn Spotify down without touching your meeting.

Quick mute

One click to mute. Another click restores your previous level.

Output picker

Switch between speakers, headphones, or AirPods without opening System Settings.

Always in the menu bar

Runs as a menu bar utility — no Dock icon, no clutter.

Native & lightweight

Built on Apple's Core Audio Process Taps API. No virtual audio drivers.

Launch at login

Right-click the menu bar icon to enable auto-start.

Preview

Sound Bar controlling Brave Browser volume

Requirements

macOS 14.2 (Sonoma) or later
Build tools Xcode Command Line Tools (source builds only)
Architecture Apple Silicon & Intel

On older macOS versions there is no public API for per-app volume without virtual drivers like Background Music.

Install

Homebrew (recommended)

brew tap manuxstack/sound-bar
brew install --cask sound-bar

Download

  1. Go to Releases
  2. Download Sound.Bar.zip
  3. Unzip, then move Sound Bar.app to /Applications
  4. Open the app from Applications (right-click → Open the first time if macOS blocks it)

Official releases are notarized when published from CI with a Developer ID certificate.

Build from source

git clone https://github.com/manuxstack/sound-bar.git
cd sound-bar
./scripts/build.sh
open "Sound Bar.app"

Install system-wide:

cp -R "Sound Bar.app" /Applications/

Create a release

Releases are automated with GitHub Actions. To ship a new version:

# 1. Bump version in App/Info.plist (CFBundleShortVersionString + CFBundleVersion)
# 2. Commit, tag, and push
git tag v1.1.0
git push origin v1.1.0

GitHub Actions will build Sound Bar.app, zip it, and publish it to Releases.

After the release, update the Homebrew cask:

./scripts/bump-cask.sh 1.1.0
git add Casks/sound-bar.rb && git commit -m "Bump Homebrew cask to 1.1.0"

Notarization (maintainers)

Add these GitHub Actions secrets to notarize releases automatically:

Secret Description
APPLE_CERTIFICATE_BASE64 Developer ID Application .p12, base64-encoded
APPLE_CERTIFICATE_PASSWORD Password for the .p12
SIGN_IDENTITY e.g. Developer ID Application: Your Name (TEAMID)
APPLE_ID Apple ID email
APPLE_APP_SPECIFIC_PASSWORD App-specific password from appleid.apple.com
APPLE_TEAM_ID 10-character Team ID

Local notarization:

export APPLE_ID="you@example.com"
export APPLE_TEAM_ID="XXXXXXXXXX"
export APPLE_APP_SPECIFIC_PASSWORD="xxxx-xxxx-xxxx-xxxx"
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" ./scripts/build.sh
./scripts/notarize.sh "Sound Bar.app"

Code signing

For local development, set up a persistent signing identity so the Audio Capture permission survives rebuilds:

./scripts/setup-signing.sh   # one-time
./scripts/build.sh

macOS will ask for Keychain access the first time — click Always Allow:

macOS Keychain prompt for codesign

Without a stable signing identity, the app is ad-hoc signed and macOS will re-prompt for permission after every build.

Permissions

The first time you move a volume slider, macOS requests Audio Capture access:

System Settings → Privacy & Security → Audio Capture → Sound Bar

Sound Bar intercepts other apps' audio to replay it at your chosen volume. It does not access your microphone.

How it works

Sound Bar uses Core Audio Process Taps (macOS 14.2+):

flowchart LR
    A["App audio\n(e.g. Spotify)"] --> B["Process Tap"]
    B --> C["IOProc\n(gain applied)"]
    C --> D["Speakers / AirPods"]
    B -. "original output\nsilenced" .-> X["System mixer"]
Loading
  1. Creates a tap on the target app's audio process
  2. Silences its original output in the system mixer
  3. Routes captured audio through a private aggregate device
  4. Applies your volume in real time

Smart app detection

Browsers and Electron apps often play audio from helper subprocesses (com.brave.Browser.helper). Sound Bar resolves the parent app's name and icon automatically.

Stable list order

Apps keep their position once they appear. The list won't jump around when audio starts or stops.

Development

sound-bar/
├── App/Info.plist
├── Sources/sound-bar/
│   ├── SoundBarAppDelegate.swift   # Menu bar + popover
│   ├── ContentView.swift           # SwiftUI UI
│   ├── MixerStore.swift            # State & mixing logic
│   ├── VolumeMixer.swift           # Core Audio tap + IOProc
│   ├── AppIdentity.swift           # Parent app name/icon resolution
│   ├── AudioProcessList.swift
│   └── OutputDeviceList.swift
├── docs/                           # README assets
└── scripts/
    ├── build.sh
    └── setup-signing.sh
swift build              # dev build
./scripts/build.sh       # release .app bundle
CONFIG=debug ./scripts/build.sh

Stack: Swift 5.9 · SwiftUI · AppKit · Core Audio · SPM (zero dependencies)

Contributing

  1. Fork the repo
  2. git checkout -b feature/my-improvement
  3. Commit and push
  4. Open a Pull Request

License

MIT


Made for macOS · Back to top

About

Free open-source macOS menu bar app for per-app volume control. Windows-style volume mixer for Mac — Swift, SwiftUI & Core Audio Process Taps.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors