A system equalizer for macOS. It shapes the sound of the whole Mac, not one app at a time.
Website · Download · Pricing · Discussions · Contributing
This repository is the public home of Sonora: documentation, screenshots, ideas and discussion. The app's source code is private and is not here. Everything below describes what the app does and how it is built, at the level a developer would want to know before trusting it with their audio.
- What it is
- Features
- How it works
- The AI assistant, and why it cannot hurt you
- Privacy: what leaves your Mac
- Install
- Free plan and paid plan
- Languages
- Design
- Get involved
- Credits
- License
Sonora lives in the macOS menu bar. Everything that comes out of your Mac - Spotify, Apple Music, YouTube in a browser, Netflix, a game, a call - goes through one processing chain before it reaches your speakers or headphones. You drag a curve and hear the change while the music keeps playing.
It is not a plugin for one player and it does not need a virtual audio driver installed by hand.
- 10 bands from 31 Hz to 16 kHz, or 15, 20, 31 and 41 bands spread from 20 Hz to 20 kHz. Changing the grid resamples your curve instead of throwing it away.
- A curve you drag directly, with the live spectrum of what is playing drawn behind it.
- An automatic preamp that lowers the level as much as the curve raises it, and a safety limiter that is always on, so boosting never turns into clipping.
- A signal panel that shows headroom and counts clipped samples, if you want the numbers.
One shelf plus four bands made only for the low end - Sub, Punch, Body, Mud - and a subsonic filter that removes rumble you cannot hear but your speakers still try to play.
25 effects, each explained in plain words with a bar that shows how hard it is working right now. Among them: compressor, limiter, de-esser, crossfeed and mono bass for headphones, and 8D rotation, where the sound circles slowly around your head.
13 scenes - concert, stadium, club, cinema, cathedral and more - in one click. A space changes only the room around the sound (width, reverb, distance). It never touches your equalizer curve.
Factory presets, your own (save, rename, delete), and presets are remembered per audio output: your headphones and your desk speakers each keep their own sound.
Sonora ships 736 headphone correction curves, and recognises many models on its own from the name macOS reports. Models not in the list can be imported from an AutoEq file you download yourself. You choose how much of the correction to apply, and you can ask for a model to be added.
Speakers sound different in every room. Sonora measures yours using an iPhone as the microphone, in four guided steps that take about two minutes:
- silence at your listening position, to measure the room's own noise;
- test noise at the same position, which is the sound as you hear it;
- and 4. the phone about 20 cm in front of each speaker, which gives a reference that separates the room from the phone's microphone.
The correction is detailed below 300 Hz, where rooms cause most of their trouble, and only a gentle tilt above. Rooms are saved and recalled automatically from the audio output. Nothing is recorded: only the loudness of each band is sent from the phone to the Mac.
Turn it on and Sonora analyses the track that is playing and adapts the curve in real time, which a fixed equalizer cannot do. There is also a "show only" mode that displays what it would change without applying it.
macOS does not let one app set another app's volume. Sonora does it by capturing each app separately and sending it back out with the gain you choose: turn the browser down without touching the music, keep calls above everything else. Volumes can be saved as scenes, and rules can apply them on their own.
Every page has a player at the bottom for what is playing (Spotify, Apple Music), plus a full-screen mode with a backdrop that follows the music.
Scan a code once and your phone becomes a remote for Sonora on that Mac: equalizer, presets, spaces, playback and volume. The remote is a web page, not another app to install, and it has to be approved on the Mac first.
- Advanced: the full window, three columns, ten pages.
- Minimal: a small panel under the menu-bar icon with the equalizer as faders, the band count, the bass, the preset and automatic correction. Nothing else, for when that is all you need.
Both come in a dark and a light appearance.
| App | Native Swift and SwiftUI. No Electron, no web view for the interface. A menu-bar app (LSUIElement), so there is no Dock icon. |
| Audio capture | Core Audio process taps, the system API Apple added in macOS 14.4. That is why 14.4 is the minimum. Sonora captures the system's output, processes it, and plays it to the device you chose. |
| Processing | Its own DSP chain in Swift, running in real time: equalizer, bass, effects, space, headphone and room correction, preamp, limiter. |
| Build | Universal binary: Apple Silicon and Intel. |
| Updates | Built into the app. It checks for a newer version and installs it only when you say so. |
| Site, account, payments | TypeScript on Cloudflare Workers. Payments go through Stripe; card details never reach Sonora's servers. |
| Remote | A web page on your phone, paired with the Mac through a one-time code and an approval on the Mac. |
A few engineering rules the project holds itself to:
- A control is not proven by its code. Every slider is tested by dragging it for real and counting how many distinct values reached the audio engine during the drag.
- Every text in a catalogue, every key in every language. A missing translation stops the build.
- One source of truth for the price. What the app and the site show is read from the payment provider, so the page and the charge cannot disagree.
- Contrast is measured. Every colour that carries text is checked at 4.5:1 or better on every surface it can appear on.
Sonora has an optional chat panel: describe the sound you want ("it booms too much", "make it softer") and it proposes changes. It can talk to a local model through Ollama or to Claude or GPT with your own API key. Claude Desktop can also drive the same tools.
The design assumes the model can be fooled - it reads track titles written by strangers - and limits what happens if it is:
- A closed list of 18 audio-only tools. No files, no shell, no network, no keychain, no account. Those tools do not exist to be misused.
- You choose the areas it may touch (equalizer, bass, effects, spaces, automatic correction, system volume, room). Areas you do not tick are not even shown to the model. System volume and room measurement are off by default.
- Every argument is rebuilt, not just validated. A field the model invents has no path into the audio engine.
- Gain ceilings protect your ears: never more than +6 dB in one step, never past +9 dB.
- Text from outside is never an instruction. Titles and device names are fenced off as data.
- Hear before you keep. Every change goes into a trial on top of a snapshot of the previous sound. You can switch between the two live, and nothing is saved until you apply it.
On the connection side: Ollama is accepted only on loopback (this Mac), Claude and OpenAI only over HTTPS, redirects are refused, your API key is stored in the macOS keychain and never synced, and the Claude Desktop bridge uses a Unix socket readable only by your user, not a network port.
Even if the model is fooled, the worst that happens is the music sounds bad, and you hear it before you keep it.
- Your audio never leaves the Mac. Processing is local.
- No usage tracking about you. The server counts anonymous requests, with no IP address and no identifier stored.
- The account is optional. It unlocks the paid plan on your Macs and syncs your settings. Without it, settings stay on this Mac.
- The AI assistant is off until you set it up. With Ollama, nothing leaves the Mac; with Claude or GPT, requests go directly from your Mac to that provider with your key.
- Room measurement sends only per-band loudness from the phone, never a recording.
- Feedback from inside the app is sent only when you press send.
The website uses Google Analytics. In the EEA and the UK it asks for consent first, with two equal buttons, and advertising storage stays denied everywhere. Full details: privacy notice.
Requirements: macOS 14.4 or later, Apple Silicon or Intel.
- Download the DMG from eqsonora.com/download.
- Drag Sonora into Applications and open it. It appears in the menu bar.
Heads up: the app is not notarised by Apple yet. The first time you open it, macOS blocks it. Go to System Settings -> Privacy & Security and press Open Anyway. This is needed only once: updates installed from inside the app do not go through this step.
macOS will ask for permission to capture audio, which is how a system-wide equalizer works.
Sonora is free everywhere in the world.
- Free, forever: the equalizer and the presets.
- 30 minutes a day with every feature, to try everything. The minutes come back every day at 00:00 UTC. When they run out, paid features pause and nothing you set up is lost.
- Sonora+ removes every time limit on every Mac your plan covers, with a 14-day refund on the first payment.
The paid plan can currently be purchased only from Switzerland and Liechtenstein. The reason is regulatory, not technical: selling elsewhere requires tax registrations and legal representation that are not set up yet. Everywhere else Sonora runs on the free plan, with no paywall pushed at you. The current price, in Swiss francs, is always on eqsonora.com/pricing.
The app speaks 12 languages: English, German, French, Italian, Spanish, Portuguese, Dutch, Polish, Turkish, Japanese, Chinese and Korean. The website is in English, German, French and Italian.
Spotted a translation that sounds wrong? That is a very welcome contribution, see CONTRIBUTING.md.
Flat surfaces separated by one-point rules, square corners, one orange accent, and no glass, blur or glow. Motion is short and precise, and it switches off with Reduce Motion. Labels are told apart by size, weight and colour, never by letter spacing or capitals.
This project listens. There is no code to send a pull request against, but there is a lot you can do:
| you want to | go to |
|---|---|
| propose an idea or a feature | Discussions -> Ideas |
| ask a question | Discussions -> Q&A |
| say what you think, share your setup | Discussions -> General |
| report a bug | Issues, or the feedback button inside Sonora |
| ask for a headphone model | Issues -> Headphone request |
| fix a typo in these docs | a pull request on this repository |
| report a security problem | privately, see SECURITY.md |
Read CONTRIBUTING.md first, and be decent to each other: CODE_OF_CONDUCT.md.
- Headphone correction curves derived from measurements by oratory1990, processed through AutoEq by Jaakko Pasanen (MIT licence).
- Interface type: Jost. Website type: Archivo. Both under the SIL Open Font License.
The contents of this repository (this README, the other documents and the images) are © Sonora. The Sonora application, its source code and its brand are not licensed for reuse. This repository exists to describe the product and to talk with the people who use it, not to distribute it.




