How It Works
A detailed explanation of how Equaliser processes audio on your Mac.
Overview
Equaliser provides system-wide audio equalisation for your Mac. This means every app — Spotify, Safari, Games, FaceTime — has its audio processed through the equaliser before reaching your speakers or headphones.
Achieving system-wide EQ on macOS requires a special approach. Unlike individual apps that only process their own audio, Equaliser needs to intercept all audio playing on your system. This is accomplished using a virtual audio driver.
The Audio Pipeline
When Equaliser is running, audio flows through this pipeline:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Your Apps │ │ Equaliser │ │ Equaliser │ │ Output Device │
│ (Spotify, etc.)│ ──▶ │ Driver │ ──▶ │ App (EQ) │ ──▶ │ (Speakers/ │
│ │ │ (Virtual Device)│ │ (Processing) │ │ Headphones) │
└─────────────────┘ └──────────────────┘ └─────────────────┘ └─────────────────┘
| Stage | What Happens |
|---|---|
| Your Apps | Any app playing audio on your Mac |
| Equaliser Driver | A virtual device that captures system audio before it reaches hardware |
| Equaliser App | Applies EQ processing, gain adjustments, and effects |
| Output Device | Your actual speakers, headphones, or external audio interface |
How macOS Sees It
macOS treats the Equaliser Driver as a real audio device. When you set it as your system default output:
- All apps send their audio to the driver
- The driver passes audio to Equaliser for processing
- Equaliser sends the processed audio to your chosen output
The Virtual Audio Driver
What Is It?
The Equaliser Driver is a virtual audio device that installs into macOS's audio system. It appears alongside your real audio devices (built-in speakers, headphones, etc.) but has no physical hardware — it exists purely to capture audio for processing. It's based on BlackHole by Existential Audio Inc., customised with dynamic device naming and shared memory capture for seamless integration with Equaliser.
Why Is It Needed?
macOS doesn't allow apps to intercept each other's audio. Each app can only access its own audio stream. The virtual driver solves this by becoming the system-wide output device, creating a common point where all audio converges.
Installation
The driver requires admin privileges to install. When you first enable Equaliser:
- macOS prompts for your password
- The driver installs to
/Library/Audio/Plug-Ins/HAL/Equaliser.driver - Equaliser appears as an available audio device
Uninstallation: The driver can be removed from Settings → Driver → Uninstall Driver. This requires admin privileges again.
Automatic Updates
Equaliser checks the bundled driver version against the installed version. If a newer version is included with the app, you'll be prompted to update.
Audio Routing Modes
Equaliser offers two modes for handling audio devices.
Automatic Mode (Recommended)
The simplest way to use Equaliser. Set it once and forget about it.
| Feature | Behaviour |
|---|---|
| Output Selection | Follows your macOS Sound settings automatically |
| Driver Naming | Shows the output device name (e.g., "Speakers (Equaliser)") |
| Device Changes | Instantly follows when you change macOS default output |
| Headphones | Auto-switches to headphones when plugged in |
How it works:
- Set the Equaliser Driver as your default output device (Equaliser does this automatically)
- Change your output device in macOS Sound settings
- Equaliser detects the change and routes audio accordingly
Manual Mode
For advanced users who want complete control over device selection.
| Feature | Behaviour |
|---|---|
| Input Device | Choose any audio input (virtual or real) |
| Output Device | Choose any audio output device |
| Flexibility | Works with third-party virtual drivers (BlackHole, etc.) |
| Permission | Requires microphone permission |
Use Manual Mode when:
- You want to use a different virtual audio driver as input
- You need to route audio from a specific application
- You're doing advanced audio routing with multiple virtual devices
Capture Methods
Equaliser supports two methods for capturing audio from the driver.
Shared Memory (Default)
The default and recommended capture method.
| Aspect | Details |
|---|---|
| Method | Lock-free ring buffer via memory mapping |
| Microphone Permission | Not required |
| Control Center Indicator | No orange microphone indicator |
| Compatibility | Only works with the Equaliser Driver |
The driver writes audio to shared memory, and Equaliser reads it. No microphone permission needed, no system indicators.
HAL Input
An alternative capture method for specific use cases.
| Aspect | Details |
|---|---|
| Method | macOS CoreAudio HAL input stream |
| Microphone Permission | Required |
| Control Center Indicator | Orange microphone indicator shown |
| Compatibility | Works with any input device |
When to use HAL Input:
- Using Manual Mode with a third-party virtual driver
- Capturing from a real input device
- Advanced audio routing setups
⚙️ Technical Details: How Shared Memory Capture Works
The shared memory capture uses a lock-free ring buffer:
- The driver writes audio samples to a memory-mapped ring buffer
- Equaliser reads from this buffer synchronously during its output callback
- Atomic operations ensure thread safety without locks
- No memory allocation happens on the audio thread
Why this matters: - Real-time safety: Audio processing must never block or allocate memory - Low latency: Direct memory access without system calls - Privacy: macOS doesn't consider this "microphone access"
The ring buffer also handles clock drift between the driver and output device. Since the driver and output device may run at slightly different rates, the buffer absorbs timing differences without artefacts.
⚙️ Technical Details: HAL Input Capture
HAL Input uses macOS's standard audio input mechanism:
- Equaliser opens an input stream on the selected device
- macOS calls a callback with audio buffers
AudioUnitRenderpulls audio data from the hardware layer
Why this requires permission: macOS treats any input stream as "microphone access" for privacy. Even virtual drivers trigger this requirement.
The orange indicator: macOS shows an orange microphone icon in Control Center whenever an app has an open input stream. This is system behaviour and cannot be disabled.
The Equaliser Engine
Equaliser uses a custom biquad DSP engine for audio processing. This provides native performance through Apple's vDSP framework, supporting up to 64 bands of parametric EQ with low latency and real-time safety.
The engine is built on the industry-standard RBJ Audio EQ Cookbook and implements 7 filter types: parametric, low-pass, high-pass, low shelf, high shelf, band-pass, and notch. The Q parameter controls resonance for low/high-pass filters and slope for shelf filters.
Key features:
- Real-time safe — No allocations or locks on the audio thread
- Native performance — SIMD-optimised via Apple's Accelerate framework
- Independent stereo — Left and right channels can have completely different EQ curves
- Up to 64 bands — Far beyond typical 10-band equalisers
For a detailed explanation of how the biquad engine works, see The EQ Engine.
Parametric EQ
Equaliser provides up to 64 bands of parametric equalisation. Each band gives you precise control over:
| Control | What It Does |
|---|---|
| Frequency | The centre frequency to adjust (20 Hz – 20 kHz for standard bands) |
| Gain | How much to boost or cut (-36 dB to +36 dB) |
| Bandwidth | How wide or narrow the adjustment is |
| Filter Type | Parametric, Low Shelf, High Shelf, and more |
Standard Band Frequencies
The default 10-band configuration uses logarithmically-spaced frequencies:
| Band | Frequency | Range Covers |
|---|---|---|
| 1 | 32 Hz | Sub-bass |
| 2 | 64 Hz | Deep bass |
| 3 | 128 Hz | Upper bass |
| 4 | 256 Hz | Lower mids |
| 5 | 512 Hz | Mids |
| 6 | 1000 Hz (1 kHz) | Upper mids |
| 7 | 2000 Hz (2 kHz) | Presence |
| 8 | 4000 Hz (4 kHz) | Presence / Brilliance |
| 9 | 8000 Hz (8 kHz) | Highs |
| 10 | 16000 Hz (16 kHz) | Air |
Gain Controls
In addition to per-band adjustments, Equaliser provides overall gain controls:
| Control | Position | Range | Purpose |
|---|---|---|---|
| Input Gain | Before EQ | -36 dB to +36 dB | Adjust level before processing |
| Output Gain | After EQ | -36 dB to +36 dB | Compensate for EQ changes |
Processing Chain
Audio passes through this sequence:
[Input Audio] → [Input Gain] → [EQ Bands] → [Output Gain] → [Output Audio]
When bypassed (EQ toggle off), the EQ bands and input/output gains are skipped.
Compare Mode
Compare Mode lets you A/B test your EQ settings against a flat response:
| Mode | What You Hear |
|---|---|
| Normal | Your EQ curve |
| Compare | Flat response with matched volume |
The volume matching ensures fair comparison — EQ boosts naturally sound louder, which can bias perception.
Presets
Factory Presets
Equaliser includes 11 carefully crafted presets for common use cases:
| Preset | Best For |
|---|---|
| Flat | Reference, testing |
| Bass Boost | Hip-hop, EDM, action movies |
| Treble Boost | Classical, acoustic, podcasts |
| Vocal Presence | Podcasts, voice calls, audiobooks |
| Loudness | Low-volume listening |
| Acoustic | Acoustic music, singer-songwriter |
| Rock | Rock, metal, alternative |
| Electronic | EDM, techno, house |
| Jazz | Jazz, blues, soul |
| Podcast | Speech content |
| Classical | Orchestral, chamber music |
See the EQ Presets Guide for detailed explanations of each preset.
Custom Presets
Create your own presets:
- Adjust your EQ settings
- Click the preset menu → Save As...
- Name your preset
Custom presets are saved to:
~/Library/Application Support/Equaliser/Presets/
Import and Export
- Export: Share presets as
.eqpresetfiles - Import: Load presets from
.eqpresetfiles - EasyEffects: Import presets from Linux EasyEffects (compatible format)
- REW: Import filter settings from Room EQ Wizard
Device Management
Headphone Auto-Switch
When headphones are connected, Equaliser automatically switches output:
| Condition | Behaviour |
|---|---|
| Current output is built-in speakers | Switches to headphones |
| Current output is external device | Keeps current output |
This matches macOS behaviour and prevents audio from unexpectedly playing through speakers.
When headphones are unplugged, Equaliser restores the previous output device from history.
Device History
Equaliser remembers your output device choices:
- When a device becomes unavailable, Equaliser finds a replacement
- When the device returns, Equaliser can restore your preference
- History is limited to prevent stale device references
⚙️ Technical Details: Device Selection Logic
Equaliser uses a prioritised selection algorithm:
- Preserve current: If your saved device is still available, keep it
- Use macOS default: If your saved device is gone, use macOS's default
- Find fallback: If no valid devices exist, use built-in speakers
Privacy & Permissions
What Equaliser Does NOT Do
| Not Done | Meaning |
|---|---|
| ❌ Record audio | No audio is ever saved or stored |
| ❌ Transmit audio | No network activity of any kind |
| ❌ Collect analytics | No usage tracking |
| ❌ Phone home | No background network requests |
All audio processing happens locally on your Mac. Equaliser has no network capability.
Microphone Permission
macOS may request microphone permission when Equaliser launches. Here's why:
| Capture Mode | Permission Required? | Why |
|---|---|---|
| Shared Memory (default) | No | Audio read from memory, not microphone API |
| HAL Input | Yes | Uses macOS audio input APIs |
| Manual Mode | Yes | Always requires HAL input |
The permission prompt appears at launch because macOS detects the audio-input entitlement in the app, even though the default mode doesn't need it. This is macOS behaviour and cannot be controlled.
If you only use Automatic Mode with Shared Memory capture, you can deny the permission — the app will work correctly.
Troubleshooting
No Sound After Enabling
- Check that Equaliser Driver is set as default output in macOS Sound settings
- In Automatic Mode, verify an output device is selected
- Try toggling EQ off and on
Orange Microphone Indicator Appears
This happens when using HAL Input capture or Manual Mode. To avoid it:
- Go to Settings → Driver
- Select "Shared Memory" as capture mode
- Ensure you're in Automatic Mode
Driver Installation Fails
Driver installation requires admin privileges. If installation fails:
- Ensure you entered your password correctly
- Check that no other audio apps are blocking the installation
- Try restarting your Mac and installing again
Audio Sounds Distorted
Distortion usually indicates:
- Input gain too high: Reduce Input Gain
- Output gain too high: Reduce Output Gain
- Excessive band boost: Reduce individual band gains
Watch the level meters for clipping indicators (red peaks).