macOS menu bar utility that intercepts and routes per-app audio streams to independent output devices using BlackHole and ScreenCaptureKit.
AudioLane lets you send different apps to different audio output devices simultaneously. Play music through your speakers while watching a YouTube video through your headphones — all managed from a clean menu bar interface.
- Route any running app to any connected output device
- Unrouted apps continue playing through your system default device
- Routes are saved and restored between sessions
- Automatically restores your audio setup when the app closes
- macOS 14.0 (Sonoma) or later
- Homebrew
- BlackHole 2ch — a free virtual audio driver
Install everything with two commands:
brew tap winner14/audiolane
brew install --cask audiolaneBlackHole will be installed automatically as part of the process.
To update AudioLane to the latest version:
brew upgrade --cask audiolaneSince AudioLane is not yet notarized, macOS will show a security warning on first launch.
To open it:
- Go to System Settings → Privacy & Security
- Scroll down to find "AudioLane was blocked"
- Click Open Anyway
- Enter your password
This is a one-time step.
AudioLane requires Screen Recording permission to capture and route app audio. On first launch you will be prompted to grant this — click Allow.
If you accidentally denied it:
- Go to System Settings → Privacy & Security → Screen Recording
- Find AudioLane and toggle it on
- Quit and relaunch AudioLane — this step is required
- Click the AudioLane icon in your menu bar
- Under App Routes, find the app you want to route
- Click the chevron (⌃⌄) next to it and select an output device
- Audio from that app will now play exclusively through the chosen device
To stop routing an app, select System Default from its device picker.
The menu bar icon shows how many routes are currently active.
brew uninstall --cask audiolane
brew untap winner14/audiolaneYour system audio will be fully restored on uninstall.
To also remove BlackHole:
brew uninstall --cask blackhole-2chAudioLane may not have restored your system output device correctly. Fix it manually:
- Go to System Settings → Sound → Output
- Select your preferred output device
Or run:
# Restart the audio daemon
sudo killall coreaudiodmacOS needs to reload its audio drivers after BlackHole installs. Try:
sudo killall coreaudiodIf that doesn't work, a full restart will always resolve it:
Apple menu → Restart
BlackHole may be installed but not yet registered. Run:
system_profiler SPAudioDataType | grep -i blackholeIf BlackHole appears in the output, restart CoreAudio:
sudo killall coreaudiodThen relaunch AudioLane.
This can happen if AudioLane was force-quit without cleaning up. Fix it:
- Open AudioLane
- Click Reset Audio in the footer
- Or go to System Settings → Sound → Output and manually select your device
This can happen after macOS updates. Re-grant it:
- System Settings → Privacy & Security → Screen Recording
- Toggle AudioLane off and back on
- Quit and relaunch AudioLane
If a previously routed device is no longer connected, AudioLane skips that route automatically. Reconnect the device and reopen the app — routes will restore.
See the First launch section above — go to System Settings → Privacy & Security → Open Anyway.
AudioLane uses two macOS frameworks:
ScreenCaptureKit captures the audio output of individual apps. When you assign an app to a device, AudioLane starts a capture stream for that app and plays its audio through an AVAudioEngine instance pointed at the chosen device.
BlackHole acts as a virtual sink — AudioLane sets it as the system default output so all audio flows through it, then routes each captured stream to its assigned device. Unrouted apps are captured at the display level and played through your original system default device.
When AudioLane quits, it restores your original system output device automatically.
- Swift + SwiftUI
- ScreenCaptureKit (per-app audio capture)
- CoreAudio (device enumeration and routing)
- AVFoundation (audio playback engine)
- BlackHole 2ch (virtual audio driver)
- Bundled audio driver (no BlackHole dependency)
- Volume control per route
- App Store distribution
- Sleep/wake stream recovery
- Menu bar audio level indicators
MIT