SoundMax
Free 10-band system EQ for macOS - SoundSource alternative with per-device profiles, HDMI volume control & AutoEQ integration
Install / Use
/learn @snap-sites/SoundMaxREADME
SoundMax
A free, open-source macOS system-wide 10-band parametric equalizer.
SoundMax sits in your menu bar and applies real-time EQ processing to all system audio, letting you fine-tune your listening experience across any app.
Features
- 10-Band Parametric EQ - 32Hz, 64Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz
- ±12dB Per Band - Precise control with professional biquad filtering
- Built-in Presets - Flat, Bass Boost, Treble Boost, Vocal, Rock, Electronic, Acoustic
- Custom Presets - Save and load your own EQ configurations
- Per-Device Profiles - Automatically save and restore EQ settings for each output device
- HDMI Volume Control - Software volume slider for HDMI outputs (macOS disables hardware control)
- AutoEQ Integration - One-click headphone correction for 150+ popular headphones (via AutoEQ)
- Menu Bar App - Always accessible, no dock icon clutter
- Launch at Login - Optional auto-start with your Mac
- Device Flexibility - Works with various audio interfaces and sample rates
Requirements
- macOS 13.0 (Ventura) or later
- BlackHole 2ch virtual audio driver
Installation
Step 1: Install BlackHole
BlackHole is a free virtual audio driver that routes system audio through SoundMax.
brew install blackhole-2ch
Or download directly from BlackHole Releases.
Step 2: Install SoundMax
Option A: Download Release (Recommended)
- Download the latest DMG from Releases
- Open the DMG and drag SoundMax to Applications
- If macOS blocks the app: Right-click → Open → Open
Option B: Build from Source
# Install Xcode Command Line Tools
xcode-select --install
# Install XcodeGen
brew install xcodegen
# Clone and build
git clone https://github.com/snap-sites/SoundMax.git
cd SoundMax
xcodegen generate
xcodebuild -project SoundMax.xcodeproj -scheme SoundMax -configuration Release build
Setup Guide
Initial Configuration
-
Set BlackHole as System Output
- Open System Settings → Sound → Output
- Select BlackHole 2ch
- This routes all system audio through BlackHole
-
Launch SoundMax
- Open from Applications or Spotlight
- Look for the slider icon (☰) in the menu bar
- Grant microphone access when prompted (required to capture audio from BlackHole)
-
Configure Audio Routing
- Input: Should auto-select "BlackHole 2ch"
- Output: Select your actual speakers or headphones (e.g., MacBook Speakers, AirPods, Scarlett 2i2)
-
Start Processing
- Click the Start button
- Status indicator turns green when running
Audio Signal Flow
┌─────────────┐ ┌───────────┐ ┌──────────────┐ ┌─────────────┐
│ Your Apps │ → │ BlackHole │ → │ SoundMax │ → │ Speakers │
│ (Spotify, │ │ (2ch) │ │ (EQ + DSP) │ │ (Real Audio │
│ YouTube) │ │ │ │ │ │ Output) │
└─────────────┘ └───────────┘ └──────────────┘ └─────────────┘
Usage
EQ Controls
| Action | Effect | |--------|--------| | Drag slider up | Boost frequency (orange, up to +12dB) | | Drag slider down | Cut frequency (blue, down to -12dB) | | Center position | No change (0dB) | | Toggle switch | Enable/disable EQ processing |
Presets
- Select Preset: Use the dropdown menu to choose built-in or custom presets
- Save Custom: Click + to save current EQ settings
- Delete Custom: Click trash icon (only available for custom presets)
- Reset: Click Reset button to return all bands to 0dB
Launch at Login
Check the "Launch at Login" box to have SoundMax start automatically when you log in. This setting is managed through macOS Login Items.
Per-Device Profiles
SoundMax automatically remembers your EQ settings for each output device:
- First time with a device: Adjust your EQ settings and click "Save Profile"
- Returning to a device: Your saved EQ and volume settings are automatically restored
- HDMI displays: A software volume slider appears since macOS disables hardware volume control for HDMI
This is perfect for users who switch between headphones, speakers, and HDMI displays with different audio characteristics.
AutoEQ Headphone Correction
SoundMax integrates with the AutoEQ project to provide scientifically-measured frequency response corrections for popular headphones.
- Click the headphones icon (🎧) next to the preset menu
- Search for your headphones or browse the list
- Click to apply the correction curve
- Your EQ is automatically adjusted to flatten your headphone's frequency response
Included headphones (150+):
- Over-ear: Sennheiser HD 560S/600/650/800, Beyerdynamic DT 770/880/990, Sony WH-1000XM4/XM5, Audio-Technica ATH-M50x, HiFiMAN Sundara/Ananda/Edition XS, Focal Utopia/Clear, AKG, Meze, Audeze
- In-ear: Apple AirPods Pro/Pro 2, Sony WF-1000XM4/XM5, Samsung Galaxy Buds, Shure SE series, Moondrop (Aria/Chu/Kato/KXXS), Etymotic ER2/ER4, 7Hz, Tin HiFi, KZ, Truthear, FiiO
- Gaming: HyperX Cloud II, SteelSeries Arctis, Razer BlackShark, Logitech G Pro
- On-ear: Koss Porta Pro/KPH40, Grado SR series
The correction curves are fetched from the AutoEQ database and converted to our 10-band format.
Troubleshooting
No Audio Output
- Verify BlackHole is set as system output in System Settings → Sound
- Check SoundMax shows "Running" status (green indicator)
- Ensure the correct output device is selected in SoundMax
- Try clicking Stop, then Start again
No Sound from Specific Apps
Some apps have their own audio output settings. Check the app's preferences and ensure it's using "System Default" or "BlackHole 2ch" as output.
"Microphone Access" Prompt
SoundMax requires microphone permission to capture audio from BlackHole. This is a macOS security requirement for any app that reads audio input.
- Click Allow when prompted
- If previously denied: System Settings → Privacy & Security → Microphone → Enable SoundMax
App Won't Open (Blocked by macOS)
For unsigned builds, macOS Gatekeeper may block the app:
- Right-click the app → Open → Open
- Or: System Settings → Privacy & Security → Click Open Anyway
Audio Crackling or Dropouts
- Close other audio-intensive applications
- Try a different output device
- Check Audio MIDI Setup to ensure sample rates match (44.1kHz or 48kHz)
Sample Rate Mismatch Errors
SoundMax attempts to match sample rates automatically. If issues persist:
- Open Audio MIDI Setup (in /Applications/Utilities)
- Set both BlackHole and your output device to the same sample rate
- Restart SoundMax
Project Structure
SoundMax/
├── SoundMax/
│ ├── SoundMaxApp.swift # App entry, menu bar setup
│ ├── ContentView.swift # Main UI
│ ├── Audio/
│ │ ├── AudioEngine.swift # Core Audio routing (AUHAL)
│ │ └── BiquadFilter.swift # Parametric EQ DSP
│ ├── Models/
│ │ ├── EQModel.swift # EQ state management
│ │ ├── EQPreset.swift # Preset definitions
│ │ ├── AudioDeviceManager.swift # Device enumeration
│ │ └── LaunchAtLogin.swift # Login item management
│ └── Views/
│ └── EQSliderView.swift # Custom EQ slider
├── scripts/
│ └── build-release.sh # DMG build script
├── project.yml # XcodeGen configuration
└── README.md
Technical Details
- Audio Framework: Core Audio with AudioToolbox AUHAL units
- DSP: Biquad filters implementing peaking EQ (from Audio EQ Cookbook)
- UI: SwiftUI with MenuBarExtra
- Audio Format: 32-bit float, non-interleaved stereo
- Latency: Minimal (256-512 sample buffer)
Building a Release
./scripts/build-release.sh
This creates a DMG installer in the build/ directory.
For signed distribution:
# Sign the app
codesign --deep --force --verify --verbose --sign "Developer ID Application: Your Name" build/DerivedData/Build/Products/Release/SoundMax.app
# Notarize
xcrun notarytool submit build/SoundMax-Installer.dmg --apple-id your@email.com --team-id TEAMID --password app-specific-password
License
MIT License - See LICENSE file for details.
Acknowledgments
- BlackHole by Existential Audio - Virtual audio driver
- Audio EQ Cookbook by Robert Bristow-Johnson - Biquad filter coefficients
- Built with SwiftUI and Core Audio
Related Skills
qqbot-channel
345.9kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.0k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
345.9kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
arscontexta
2.9kClaude Code plugin that generates individualized knowledge systems from conversation. You describe how you think and work, have a conversation and get a complete second brain as markdown files you own.
