A lightweight macOS menu bar app that prevents accidental audio playback through your Mac's speakers when you meant to use your AirPods.
You're in a quiet office or library, hit play on a video, and suddenly audio blasts through your MacBook speakers because your AirPods disconnected or weren't selected as the output device.
Audio Check monitors your audio output and alerts you before playing audio through non-AirPods devices. When audio starts playing on speakers, it:
- Mutes immediately - No embarrassing audio leak
- Shows a dialog - Asking what you want to do
- Offers quick actions - Switch to AirPods, continue playing, or snooze alerts
- Menu Bar App - Lives in your menu bar, no dock icon
- Real-time Monitoring - Detects audio output device changes instantly
- Smart Alerts - Only triggers when audio actually starts playing
- Quick Switch - One-click switch to AirPods from the alert or menu
- Snooze - Temporarily disable alerts for 15 minutes
- Battery Efficient - Uses CoreAudio event listeners, not polling
- Native macOS - Built with Swift and SwiftUI
| AirPods Connected | Speakers Active |
|---|---|
| Shows AirPods icon (green) | Shows speaker icon (orange) |
When audio plays on non-AirPods:
┌──────────────────────────────────────────────┐
│ ⚠️ Audio Output Warning │
│ │
│ Audio is playing through "MacBook Pro │
│ Speakers" instead of Arman's AirPods Pro. │
│ │
│ [Switch to AirPods] [Continue Playing] [Snooze 15 min]
└──────────────────────────────────────────────┘
- Current output device with status
- Quick switch to AirPods button
- Snooze status with end time
- Protection toggle
- Quit option
- macOS 14.0 (Sonoma) or later
- Xcode 15.0 or later (for building)
Download the latest release from the Releases page.
-
Clone the repository:
git clone https://github.com/yourusername/audio-check.git cd audio-check -
Open in Xcode:
open audio-check.xcodeproj
-
Build and run (⌘R)
Audio Check uses macOS CoreAudio APIs to:
- Monitor default output device - Listens for
kAudioHardwarePropertyDefaultOutputDevicechanges - Detect audio playback - Listens for
kAudioDevicePropertyDeviceIsRunningSomewherestate changes - Control system audio - Mutes/unmutes via
kAudioDevicePropertyMute - Switch output devices - Sets default output via
kAudioHardwarePropertyDefaultOutputDevice
This event-driven approach means zero CPU usage when idle - the app only wakes when macOS notifies it of audio state changes.
- No network access - Works completely offline
- No data collection - Your audio habits stay on your device
- No special permissions - Uses standard CoreAudio APIs
The app sandbox is disabled to allow CoreAudio device control, but no other system access is required.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Swift and SwiftUI
- Uses macOS CoreAudio framework
- Icon: SF Symbols
Made with care to save you from embarrassing audio moments.