OPEN SOURCE · MACOS 14.2+ · NO VIRTUAL DRIVER

System-wide
parametric EQ.
Built in a day.

macOS doesn't ship with one. So I built it. Native Swift, Core Audio Taps, dual real-time spectrum analyzer. No virtual driver. No Electron. No paywall.

Latency ~10 ms Up to 31 bands 7 filter types Hann-windowed FFT Lock-free audio thread
iQualize — DEADBEEF
Drag knob · snap · scroll gain · dbl-click reset · right-click menu
+7.0 dB
+8.0 dB
+5.0 dB
-6.0 dB
-8.0 dB
-6.0 dB
+5.0 dB
+7.0 dB
+6.0 dB
+4.0 dB
27 Hz
55 Hz
111 Hz
222 Hz
445 Hz
890 Hz
1.8 kHz
3.6 kHz
7.1 kHz
14.3 kHz
0.79 oct
0.89 oct
1.01 oct
1.17 oct
1.01 oct
1.17 oct
2.54 oct
3.02 oct
2.54 oct
1.92 oct
Bell
Bell
Bell
Bell
Bell
Bell
Bell
Bell
Bell
Bell
Interactive simulation — visual approximation of the app The real iQualize processes live system audio; this preview doesn't.
"macOS doesn't have a system-wide parametric EQ.
So I built one in a day."
Built at 04:57 in Bavaria · Listening to Opera by Ballarak
/ THE DRIVER PROBLEM

No virtual audio driver. It just works.

Other system EQs install a virtual audio device — a kernel-adjacent shim that hijacks your output. iQualize doesn't. It uses CATap, Apple's native system audio tap introduced in macOS 14.

Virtual-driver EQs kernel/driver-based

Install a kernel extension or audio driver. You don't notice it — until you do.

  • ×
    Kext or driver install required. Survives across reboots, OS updates, and your patience.
  • ×
    Fights with Bluetooth. Codec negotiation, stereo collapse, the works.
  • ×
    Loses system volume keys. Output is "the driver", not your speakers.
  • ×
    Breaks DRM-protected audio. Apple Music lossless, certain streaming sources.
  • ×
    Adds latency. Extra buffer hop through the virtual device.

iQualize CATap, native

Apple's own system audio tap, used the way Apple intended.

  • Zero drivers. Drag the .app to /Applications. Done.
  • Bluetooth-friendly. AirPods, Teufel Concept E, anything CoreAudio sees.
  • Volume keys still work. The OS still owns your output device.
  • Doesn't break DRM streams. CATap reads the post-mix bus, not the source.
  • Lock-free audio thread. Slider drags don't glitch. Ever.
/ HOW TO USE IT

Three steps. Then it's just there.

01

Install & launch

Lives in your menu bar. No system extensions, no audio device changes. Launch it and it's running. Quit it and it's gone without a trace.

02

Shape your curve

Drag band nodes across the frequency response. Add up to 31 parametric bands anywhere from 20 Hz to 20 kHz. The spectrum shows you what's happening, pre and post.

03

Every app, equalized

Spotify, YouTube, Final Cut, system sounds — everything through the same curve via Core Audio Taps. One EQ for your entire Mac.

/ FEATURES

Everything a parametric EQ should be — and the things it usually isn't.

01 / EQ ENGINE

Up to 31 bands. Bell, shelf, pass, notch.

Per-band frequency, gain, and bandwidth — accurate biquad response curves rendered from Audio EQ Cookbook formulas. Q or Octave display, your call.

BELL
L SHELF
H SHELF
L PASS
H PASS
B PASS
NOTCH
02 / SPECTRUM

Real-time pre + post FFT.

2048-point Hann-windowed FFT via Accelerate vDSP, log-frequency binned, 60 fps double-buffered. Watch what you're doing.

03 / PRESETS

Built-in + your own.

12 ship presets. Edit one and it forks — never overwrites the original. Export/import as plain JSON .iqpreset files.

DEADBEEFFlatBass BoostVocal ClarityLoudnessTreble BoostPodcastTechnoDeep HouseHard TechnoMinimalAmerican RapGerman Rap
04 / KEYBOARD

Driven by hands, not mice.

Gain ±0.5 dB
Frequency, semitone
/ ⇧⇥
Cycle bands
⌘B
Toggle bypass
⌘Z / ⌘⇧Z
Undo / redo
⌘,
Settings
05 / LIMITER

Dynamic peak limiter.

AUPeakLimiter on the output stage prevents clipping at 0 dBFS. Boost without fear.

0 dBFS
06 / BANDS

Add. Reorder. Drag. Snap.

+ buttons either side of the EQ. Right-click for "Add Suggested Band" — finds the largest frequency gap and drops one in. Drag to reorder.

07 / RUNTIME

Lock-free, glitch-free.

Ring buffer between the real-time IOProc and AVAudioEngine. Parameter writes are atomic. Slider drags coalesce into single undo entries.

08 / STEREO

L · R balance, double-click to center.

Per-channel gain in the render callback. Snap-to-center. Linked or independent channel processing — your choice.

/ ARCHITECTURE

CATap in. AUPeakLimiter out. Nothing in between you didn't ask for.

Audio flows through a ring buffer that decouples the real-time IOProc callback from AVAudioEngine's pull model. No locks on the audio thread. No glitches on slider drags.

The signal path

Apps render audio. The OS muxes it. CATap reads the post-mix bus and hands the stream to iQualize, where it's processed in-process — pre-EQ gain, parametric EQ, output gain, peak limiter — before being written back to your output device.

Sample rate is detected per device and converted internally, so it just works whether you're on a 48 kHz USB DAC or 44.1 kHz AirPods.

App audio (system mix)
CATap · macOS 14 audio tap
Ring Buffer · lock-free
AVAudioSourceNode
Pre-Gain ±24 dB
Parametric EQ · up to 31 bands
Post-Gain ±24 dB
AUPeakLimiter
Output device
FFT
2048pt · Hann
Bands
1 — 31
Gain range
±24dB
Min macOS
14.2
/ INSTALL

Two paths. Both honest.

Download the .dmg

Grab the latest release, open the disk image, drag iQualize into Applications. That's it.

Releases on GitHub
Heads up — iQualize is unsigned. Apple charges $99 a year for a developer certificate. If macOS gets stroppy, run this once:
$xattr -dr com.apple.quarantine /Applications/iQualize.app

Or build from source

Swift Package Manager. No Xcode project. One script.

~/iqualize — zsh
$git clone https://github.com/dariuscorvus/iqualize.git
$cd iqualize
$bash install.sh
› Building iQualize…
› Codesigning with ad-hoc identity…
› Installing to /Applications/iQualize.app
✓ Done. Launch it from /Applications.
$open /Applications/iQualize.app

Requirements: macOS 14.2+ · Screen & System Audio Recording permission · Apple Silicon or Intel.