ARCHIVE · PRE-1.0 RELEASES

Pre-1.0 release notes.

The 0.x history of SherlockEQ, newest first, kept for reference. For the current version and later, see the release notes.

A small fix-and-polish release. The headline is the analog VU meter, which now moves with how loudly you're actually listening instead of sitting near the bottom of the dial. Nothing about the sound changes, and no settings move.

Fixed

  • The analog VU meter reads your listening level now. It used to follow the raw digital signal, so quieter recordings and anything a streaming app had already turned down or normalized left the needle pinned at the bottom no matter how loud you had it. The dial is now anchored to your comfortable level: 0 on the meter is a moderate listening level (the same point the level meter marks in yellow), the needle rides mid-dial during normal listening, and it moves up and down with the volume — so the meter actually tells you something again. If you've set your playback calibration in Safe Listening, this tracks it exactly; if not, it uses the same sensible default the rest of the app does.
  • Help articles read correctly again. On a few Help pages — the Analog Control Unit and Audiogram articles among them — a bullet point whose text ran onto a second line was breaking off into a stray, unindented paragraph in the middle of the list. Those lists now stay whole.

Changed

  • One less repeated note on the Audiogram screen. A short disclosure that already appears in the Audiogram Help article was also sitting at the bottom of the screen itself. It's been removed from the screen; the same wording is one tap away under Help.

A small fix-and-polish release: the Graphic EQ's per-ear gain readouts are legible again, and the in-app Help articles have been brought back in line with how the app actually works today. No settings move, and nothing about the sound changes.

Fixed

  • Per-ear gain numbers on the Graphic EQ no longer get cut off. With "Adjust ears separately" turned on, the two gain readouts for each band were squeezed side by side and values like "-12.0" showed as "-12..." — unreadable at a glance. They're now stacked and color-coded to match each ear's slider and the Left/Right legend above the curve, so both numbers are fully visible and easy to tell apart.
  • Help articles now match the current app. Several Help topics still described things the way they used to work — most visibly the Graphic EQ article, which still said "twelve-band" after the grid returned to ten bands. Toggle names, the order corrections are applied in, and a few other details across the Equalizer, Audiogram, Tinnitus Tools, and Spectrum articles have been brought up to date.

A round of window and menu fixes. SherlockEQ now behaves the way a menu-bar app should — the Dock icon means what you told it to mean, the window comes back when you ask for it, and the menus are always there. Nothing about the sound changes, and no settings reset.

Windows and the Dock

  • Clicking the Dock icon opens the window again. If you keep SherlockEQ in the Dock and had closed its window, clicking the icon brought the app forward but showed nothing. It now reopens the window — and specifically the one you last had open, whether that was the main window or the Analog Control Unit.
  • “Hide the Dock icon” is now a plain on/off setting. It used to be tied to closing the window — the icon would appear whenever a window was open and only disappear afterward. Now it does exactly what it says: on means no Dock icon at all, off means the Dock icon is always there. It takes effect immediately and doesn’t depend on whether a window is open. SherlockEQ’s menus still appear whenever one of its windows is in front.
  • The menu bar no longer comes up blank. On some Macs, opening the window could leave the menu bar showing the previous app’s menus instead of SherlockEQ’s. The underlying cause — the app switching its Dock/menu behavior each time a window opened — is gone, so the menus are reliably present now.

Menus

  • The Window menu lists “SherlockEQ” and “Analog Control Unit” again (⌘0 and ⌘1), and the Audio menu — with Toggle Reference Mode (⌘B) — is reliably present. These were intermittently missing before.

First launch

  • The main window opens when the setup wizard finishes, so a new install lands in the app rather than in an empty menu bar. You can close it and SherlockEQ keeps running, exactly as before.
  • Clearer guidance about the menu-bar icon. On Macs with a notch, or a crowded menu bar, macOS can hide an app’s menu-bar icon — and no app can force it back. Setup now says so plainly and offers a one-tap “Keep SherlockEQ in the Dock” option as a dependable way back to the app if the icon is ever hard to find.

A correctness fix to listening-exposure tracking. If you use the balance control, or listen to material that's much louder in one ear, please read the first item — exposure was being under-counted for you, and the safe-listening alerts may not have fired when they should have.

Fixed

  • Exposure tracking now measures both ears. It measured only the left channel. For most listening that's harmless, because both ears carry roughly the same level — but with balance panned, or with strongly one-sided audio, the right ear could be driven hard while the tracker recorded almost nothing. In that state the daily exposure reading stayed near zero, the amber and red alerts didn't appear, and a long enough quiet stretch could clear exposure that had genuinely accumulated. SherlockEQ now takes the louder of the two ears, which is the conservative reading for a safety measure.
  • About your existing history. Days recorded before this update were measured the old way, so any day you listened with balance panned may read lower than it truly was. Those records can't be recalculated after the fact. Tracking is accurate from this version onward.

Under the hood

  • The website no longer loads any third-party code. Its handful of icons were being fetched from an outside content network on every visit; they're now part of the page itself. Nothing about the app changes — this closes a route by which someone else's compromised code could have run on the page you download from.
  • Exposure history now keeps its full magnitude. A day's reading was previously stored capped at 100 %, so a day well past the limit was indistinguishable from a day that just reached it. The displays still read 0–100 % exactly as before; the underlying record now keeps the real figure, so a future version can show how far past the limit a day went.
  • Build reproducibility: the exact version of the update framework used for each release is now recorded in the source repository.

An interface release. Nothing about the sound changes, and no settings move or reset — Settings and Health & Safety were both presented in ways that worked against their own content, and this fixes that.

Settings is easier to scan

  • Categories are now cards, in two columns. General, Appearance, Keyboard, and Data & Profiles sit open side by side instead of stacked full-width down the page. In a narrow window the columns collapse to one automatically.
  • Every switch lines up at the right edge. Controls used to sit immediately after their label, so no two were in the same place and you had to hunt down the page for the one you wanted.
  • Descriptions are shorter. Each setting keeps a one-line description; the longer explanation is now a tooltip you can hover for. The detail is still there when you want it, rather than a paragraph to re-read on every visit.
  • Only the specialized sections stay folded. Advanced Audio and Diagnostics are still collapsed by default, because they're long and rarely needed. Everything else is open — a setting like "Launch at login" shouldn't need a click to reveal.
  • Three settings were renamed to say what they do at a glance: Hide Dock icon when window closes, Show EQ and quick tone controls in popover, and Global Reference Mode shortcut. The settings themselves are unchanged.

Health & Safety is a page, not a popup

  • It moved into Comfort & Safety, below Safe Listening. It's the reference material behind those tools, so it belongs with them rather than under App with things about the app itself.
  • It opens in place, like any other screen. Nothing on it asks you to decide or confirm anything, so it no longer interrupts what you were doing or asks to be dismissed. Choosing another item in the sidebar is how you leave it.
  • Its Help links no longer close it. Opening a Help article used to dismiss the whole disclosure; now Help opens alongside and you keep your place.

The short safety notes that appear on the Equalizer and Audiogram screens are unchanged. Those are meant to catch you in the moment, and still do.

Also in this release

  • The window fits its contents again. Since the equalizer moved to ten bands it needed less room than it was asking for, so the window refused to be made as small as it could be, and opened wider than it needed to. Both now follow the actual content.

This release makes the menu-bar popover somewhere you can actually change how things sound, moves both frequency layouts onto their standard sets, and fixes a few places where the app described its own settings inaccurately. Your profiles carry over — where a setting had to move, it was converted so the sound stays the same.

Quick tone adjustments without opening a window

  • Bass, Mids, and Treble buttons in the menu-bar popover. Each press nudges a broad group of equalizer bands — less bass, brighter treble, mids forward or recessed — so you can adjust for a room, a pair of headphones, or a noisy café without leaving what you're doing. The equalizer curve now sits directly above them, so you can see the change as you make it.
  • The adjustments are relative, not a second set of controls. There's no separate "Bass: +2 dB" in the popover, because for a full equalizer curve there's no single honest number to show. A press moves the real sliders on the Equalizer screen, and that screen remains the one place your settings live. To undo an adjustment, press the opposite button — it returns things exactly where they were.
  • The popover was reorganized around what it's for. Output level and exposure sit together, then the controls worth a quick change, then a plain summary of what's being applied with links to the screens that manage it. If you'd rather keep the popover short, a setting hides the curve and the tone buttons together.

Standard frequency layouts

  • The graphic equalizer is now ten bands. It uses the standard octave series — 31.5 Hz through 16 kHz — instead of the previous twelve, which added two extra bands between the octaves. Ten is what hardware equalizers and other audio software use, so settings and advice transfer more readily, and each slider covers a range wide enough to hear as one adjustment.
  • The audiogram gained 750 Hz and 1500 Hz. These are standard clinical test frequencies, and they sit in the range speech occupies. With them, a hearing adjustment can follow a dip between the octave points rather than drawing a straight line across it. If you import an audiogram that measures either frequency, it now lands on its own row instead of being folded into a neighbour.

The app describes its own settings accurately

  • Headphone correction now belongs to the profile. A profile already carried its own headphones, correction, and preamp — but the switch that turned the correction on or off was shared across every profile. Turning it off for one profile silently turned it off for all of them, with nothing on screen to suggest so. Each profile now keeps its own setting.
  • The Equalizer no longer claims a correction is running when it isn't. A note on that screen reported headphone correction as part of the result whenever a correction was loaded, even if the correction was switched off. It now reports what's actually being applied.
  • Clearer wording where a control's state was ambiguous. The headphone correction row showed a green checkmark and the word "On" beside a switch that could be off. The row now follows the switch, and when a correction isn't running, the app says which setting is responsible.

What happened to your settings

  • Equalizer settings were converted, not reset. Any adjustment you had at 3 kHz or 6 kHz — the two bands the graphic equalizer no longer has sliders for — was folded into the surrounding bands so the result sounds the same. The built-in profiles were re-fitted onto the ten-band layout the same way. Slider positions will look different, particularly around 4 kHz, because fewer bands are now covering the same range; what you hear should not have changed.
  • Existing audiograms were filled in, not zeroed. The two new frequencies were estimated from the measurements on either side, which is what those readings already implied. Leaving them at zero would have described normal hearing between two losses and prescribed a dip to match. You can enter real values for either frequency at any time.
  • A headphone correction you had switched off stays off. Because that setting moved from the app to each profile, the old setting was carried across to every profile that has a correction loaded, rather than silently switching corrections back on.

An important fix: SherlockEQ 0.9.0 and 0.9.1 could quit unexpectedly after roughly ten minutes of continuous playback. If you're running either of those versions, please update. Nothing else changes — no settings move, and your profiles carry over untouched.

Fixed

  • SherlockEQ no longer quits unexpectedly during long listening sessions. The part of the app that measures your listening level — the one feeding the level meters and exposure tracking — was accumulating a small amount of internal overhead on every measurement instead of replacing it. Some twenty times a second, that added up: after about ten minutes of continuous audio it grew large enough to crash the app. Your saved profiles, EQ settings, and listening history were unaffected, and audio returned to normal as soon as SherlockEQ reopened, but the interruption was disruptive and it is fixed here. The measurement path now stores that state in a form that cannot accumulate, and a new automated test keeps it that way.

A maintenance release. The one fix you might notice resolves a confusing "ghost" state on the Audiogram screen for hearing profiles carried over from an earlier version; the rest are reliability and build-tooling improvements under the hood. Nothing changes in how your EQ, presets, hearing adjustments, or listening-dose tracking sound or behave.

Fixed

  • "Ghost" audiograms carried over from earlier versions now read correctly. If you'd entered an audiogram in an older version, the Audiogram screen could contradict itself: it showed your threshold values and applied a real hearing adjustment, yet also said no thresholds had been entered — and the Clear Audiogram option was hidden exactly when you'd want it. SherlockEQ now reconciles these on load: the screen states the adjustment honestly (with the date it was carried over from), the per-frequency readouts match, and Clear Audiogram is always available whenever there's an adjustment to remove. The sound you were already hearing is preserved — this only changes what the screen tells you, not the audio.

Under the hood

  • Reliability and diagnostics. Fixed a small memory-management issue in the listening-dose tracker (no effect on dose tracking itself), and the audiogram-to-EQ derivation now records a diagnostic if its band-overlap solver ever fails to converge, where before it was silent.
  • Safer code signing. Hardened the build's code-signing step so the app's auto-update components are always signed the way Apple and the Sparkle updater expect. This is a packaging change — it doesn't affect the app you run.

This is the largest SherlockEQ release so far, and it moves the app substantially closer to a 1.0. Rather than one headline feature, it's a broad step forward: a new way for your hearing adjustment to adapt to how loud you're listening, a simpler and more honest equalizer, an optional in-app listening check, and a top-to-bottom pass on wording, safety, privacy, and reliability. What follows is a summary by area, not an exhaustive list of every change.

Hearing adjustment that adapts

Your audiogram-derived adjustment can now follow the sound. An optional Adaptive mode gives a little more help in quiet passages and eases off as things get loud, instead of applying a single fixed curve. New adjustments also ease in gradually over the first few weeks rather than arriving at full strength on day one, so an unaccustomed ear has time to settle. As always, this is a comfort adjustment you fine-tune by ear — a starting point, not a clinical fitting.

A simpler equalizer

The old set of overlapping EQ modes is now two clear surfaces: a Graphic equalizer on a hearing-oriented set of bands for quick shaping, and a full Parametric canvas when you want fine control. Presets are organized around what you're trying to achieve rather than by music genre, and the more specialized mixing-oriented displays have been retired to keep the screen focused. Nothing you set up before is lost — your profiles carry across, and any bands that don't fit the graphic grid stay editable.

An in-app listening check

A new, optional guided check estimates your hearing thresholds ear by ear using quiet test tones, then offers to turn the result into a starting hearing adjustment. It's framed throughout as an at-home estimate to tune by ear — not a hearing test, and not a diagnosis.

Clearer wording, and honest limits

A wide pass on language across the app. Audiogram-derived processing is described as a "hearing adjustment," not a clinical "correction," and medical-sounding claims are gone. Health & safety information is consolidated into one place you can always reach. Level and exposure readouts now say plainly when a value is an estimate — or simply unknown — instead of ever implying "safe," and the listening-dose estimate accounts for your system volume. The app also warns you when settings work against each other, such as a tinnitus notch fighting your hearing adjustment, or a headphone correction left on for the wrong output device.

A more consistent interface

The menu-bar popover is now a glanceable status-and-remote surface rather than a cramped copy of the whole app. Profile management, the Tinnitus tools, Adaptive Comfort, Safe Listening, and Settings were each reorganized to lead with what you're trying to do. Every adjustable value now shows its scope — whole-app, per-profile, per-ear, or today — and a broad accessibility pass improved VoiceOver, keyboard control, and Dynamic Type support.

Reliability, privacy, and performance

Many improvements under the hood: safer handling of your profiles on disk, more resilient audio capture and recovery around sleep, wake, and device changes, and tightened audio-thread work for glitch-free playback. On privacy, exported profiles no longer carry machine-identifying details, listening-dose values stay out of system logs, and the in-app privacy notes now describe exactly what does and doesn't leave your Mac — nothing you play is ever recorded or sent anywhere.

A small maintenance release with two accuracy fixes under the hood: more robust detection of which channels carry your system audio when your output is an audio interface, and a corrected level scale on the spectrum display. Nothing changes in how EQ, presets, or listening-dose tracking work.

Fixes

  • Sturdier audio capture on interfaces that also have inputs. When your output device is an audio interface with its own microphone or line inputs (for example a podcasting mixer), SherlockEQ now reads the device's actual channel layout to locate your system audio instead of assuming a fixed position. This guards against an edge case where a live input could bleed into one ear. On ordinary speakers, headphones, and DACs nothing changes — this is a robustness improvement, not a change you'll normally hear.
  • The spectrum display's level scale now reads true. The frequency spectrum was reading about 1.8 dB lower than the actual signal because of how the analysis window was accounted for, so the numbers on the display sat slightly low. The scale is now calibrated correctly. This is a display-only change — it never affected the audio you hear, and it never affected listening-dose tracking, which measures level independently. The safety-warning line on the spectrum stays exactly where it was.

A reworked Tinnitus Notch. Two behavior fixes correct how the notch filter actually sounds, and the Tinnitus Notch screen gets strength presets, a live preview of the band being reduced, a guided pitch-matching flow, and an optional daily check-in.

Fixed

  • The notch's Depth slider now actually changes the sound. Previously the notch always cut all the way to silence at its center frequency no matter what Depth was set to — the slider had no audible effect. Depth now works as labeled: a shallower setting leaves more of the sound in place, a deeper one reduces it further.
  • Narrow and Wide were swapped. The Width control's Narrow setting was actually broader than Wide. They're corrected now: Narrow affects the smallest band around your selected pitch, Wide the largest.
  • The right ear's notch now shows up on the equalizer curve. When left and right ears had different notch settings, only the left ear's cut appeared on the frequency-response graph — the right ear's was invisible even though it was being applied correctly to the audio. Both ears now draw correctly on the Simple, Speech, Advanced, and Expert tabs.

Improved

  • Strength presets: Subtle, Balanced, Strong. Pick a preset instead of tuning Depth and Width by hand. Each is labeled with its trade-off — Subtle keeps audio clearest, Strong reduces more but can sound duller. The fine-tune sliders are still there if you want manual control.
  • A live preview of the notch. The Tinnitus Notch screen now draws the actual shape of the band being reduced — center frequency, depth, and width — instead of just a line marking the pitch. Both ears show at once when your left and right notches differ.
  • Guided pitch-matching. An optional walkthrough helps you find a repeatable match: sweep up from below, check for octave confusion, and capture a few matches to get a suggested average and range instead of relying on a single guess.
  • Clearer guidance on when a notch helps. The screen now explains that a notch suits steady, tone-like ringing and is less useful for hissing, roaring, clicking, pulsing, or shifting tinnitus — and calls out pulsatile, sudden one-sided, or dizziness-accompanied symptoms as reasons to see a hearing professional instead.
  • An optional daily check-in. Rate how much your tinnitus bothered you today — not how loud it seemed — and see a simple trend over time. It's not a clinical score, just a way to notice whether things are trending better.

A small bug-fix release. It resolves a case where waking your Mac — or coming back to it after it's been asleep overnight — could leave SherlockEQ stuck showing an audio-engine error banner instead of resuming normally. Nothing changes in how EQ or dose tracking work.

Fixes

  • Waking from sleep no longer gets stuck on an audio engine error. Right after your Mac wakes, or after it's been asleep overnight, SherlockEQ's audio engine could briefly disagree with itself about the current sample rate and show a stuck "Audio engine: Unexpected SR mismatch" banner until you relaunched the app. SherlockEQ now recognizes this as a momentary hiccup and retries automatically, so it resolves itself within a second or two instead of getting stuck.

A code-quality and security-hardening release. It fixes a crash on importing certain audiogram files, closes several findings from a focused security review — including a case where a downloaded headphone-correction file could push the volume to unpredictable levels — and stops your tinnitus and profile settings from being written to the system's debug logs. Nothing changes in how EQ, profiles, or safe-listening work.

Fixes

  • Importing a damaged audiogram file no longer crashes SherlockEQ. A corrupted or hand-edited audiogram file with an invalid measurement could crash the app on import. SherlockEQ now skips the bad measurement and imports the rest of the file normally.

Security

  • Headphone-correction files can no longer set an unsafe volume. A malformed or tampered ParametricEQ.txt file — whether picked manually or downloaded from the online AutoEQ catalog — could contain a preamp value extreme enough to drive the volume far beyond a safe level. That value is now kept within the same safe range as every other EQ setting.
  • Your tinnitus and profile settings stay out of the system logs. Applying a profile used to write your tinnitus notch frequency and profile name to the system's unified log in plain text, where they could end up in a diagnostic report. That detail is now redacted from the log.
  • Your hearing profiles and listening history are excluded from backups. Profiles and your listening-dose history are now marked so Time Machine and similar tools skip them, and each file is readable only by your account — so this data doesn't linger in old backups you have no way to clean up from within the app.
  • The audio engine is more resilient to unusual buffer sizes. During a device switch or sleep/wake, the audio engine could momentarily receive an unexpected buffer size. It's now validated before use, closing a theoretical memory-safety gap in that path.

Under the hood

  • Smoother real-time spectrum analysis. The spectrum analyzer's internal buffering was tightened to reduce the chance of a stall on the audio thread. No user-facing change.

A focused bug-fix release. It resolves a problem where switching to another macOS user account could leave that account with no sound. Nothing changes in how EQ or dose tracking work.

Fixes

  • Other accounts keep their sound during fast user switching. Because SherlockEQ taps the system audio at a level shared across all login sessions, switching to another user used to leave that account silent until SherlockEQ was quit. SherlockEQ now releases the audio tap when its account is switched out and restores it when you switch back, so other users hear sound normally.

A small stability-and-polish release that rounds out the 0.6 series. It corrects how the new listening-history chart labels days when you travel, and tidies the About window. Nothing changes in how EQ or dose tracking work.

Fixes

  • Listening history stays on the right day when you change time zones. Each day's entry in the 7-day history is now tied to the calendar day it happened on, so traveling between time zones no longer shifts a day's bar or resets the current day's dose early.

Improvements

  • A cleaner About window. "Free and Open Source" and the website link now share one line.

This release brings the Safe Listening screen's 7-day history to life: your daily listening dose is now saved and charted, so you can see how this week's exposure compares day to day. The About window also got a small refresh. Nothing changes in how EQ or dose tracking work.

New

  • A real 7-day listening history. The Safe Listening screen now charts each day's peak dose for the past week, coloured green, amber, or red against the same 80 % / 100 % thresholds as the live dose card. Today's bar reflects your exposure so far; past days are captured automatically at the midnight rollover and saved between launches — including when SherlockEQ was closed overnight. A day with no listening simply doesn't appear.

Improvements

  • A tidier About window. The credits now read "Free and Open Source", with a little more spacing and a link to the SherlockEQ website.

A small maintenance release. It refreshes the first-launch welcome video and fixes a case where re-opening SherlockEQ wouldn't bring the existing window forward. The rest is internal cleanup. Nothing changes in how EQ or safe-listening work.

Improvements

  • An updated welcome video. The first-launch onboarding screen now plays a refreshed intro clip.

Fixes

  • Re-launching brings the running app forward. When SherlockEQ was already running, opening it again now reliably activates the existing instance and brings its window to the front instead of occasionally leaving it in the background.

Under the hood

  • Cleaner internal state wiring. The app's audio-state object was split so each screen depends only on the settings it actually uses, and an unused parameter was removed from the spectrum analyzer. No user-facing change.

This release adds a short intro video to the first-launch welcome screen and makes your audiogram much easier to reuse — copy it onto your other profiles in one step, or save it to a file and load it back later. The spectrum analyzer, the Profiles screen, and a couple of keyboard niceties also got some polish. Nothing changes in how EQ or safe-listening work.

New

  • A welcome video on first launch. The onboarding screen now opens with a brief intro video that plays once and settles on its final frame. It's purely a welcome — onboarding works exactly as before on builds without it.
  • Apply one audiogram to several profiles at once. The Audiogram screen's new Manage Audiogram → Apply to Other Profiles… lets you copy the active profile's hearing thresholds onto any profiles you pick. Each profile's EQ, tinnitus notch, and compensation strength are left untouched — only the audiogram and its correction update.
  • Import and export audiograms. Manage Audiogram → Import…/Export… saves your audiogram to a file or loads one back into the active profile, so you can back it up or move it between Macs without copying a whole profile.

Improvements

  • The analyzer's input and output now show the real difference. The input overlay reflects the true unprocessed signal (both channels) instead of mirroring the output, so the gap between the two curves is exactly what the EQ is doing.
  • A cleaner Output view. The faint peak-hold line in the spectrum now appears only when the Peaks layer is on, so an Output-only view is a clean silhouette.
  • ⌘1 opens the Analog Control Unit. Pairs with ⌘0 for the main window.
  • Profile icons have plain-English names. The icon picker now reads Person, Headphones, AirPods Pro, Speaker, Voice, Night, Day, Work, Home, and so on, instead of technical symbol names.
  • A tidier profile page. The technical metadata footer (timestamps and ID) is hidden by default; turn it back on under Settings → Diagnostics if you need it for support.

Fixes

  • "Reset to Factory Default" now enables after any change. Editing a factory preset's audiogram, tinnitus notch, compensation strength, or headphone correction now correctly enables Reset — previously it only noticed tone, output-trim, name, and balance edits.
  • The notch marker no longer lingers. The dashed marker and label in the visualizer now appear only while the tinnitus notch is on, instead of pointing at a curve feature that isn't there.

Under the hood

  • The automated test suite runs again. A startup guard kept the test bundle from launching; the suite now runs in full, so regressions get caught before they ship. No user-facing change.

A reliability release. The main fix is for audio that didn't come back cleanly after your Mac woke from sleep — most often after sitting overnight. In that state the audio engine or the system-audio tap could fail to start, leaving SherlockEQ silent until you toggled it off and on or relaunched. This release detects those momentary start-up failures and retries them on its own, so sound returns without you having to do anything. Nothing changes in how EQ, profiles, or safe-listening work.

Fixes

  • Audio reliably restarts after sleep and wake. After waking from sleep, the audio engine and the system-audio tap could occasionally report a transient start-up error and stay silent. SherlockEQ now retries these momentary failures with a short back-off on both start paths, and recovers a tap that didn't come up — so audio resumes on its own instead of needing a manual restart.

Under the hood

  • Equalizer filtering now runs on Apple's Accelerate framework. The per-ear equalizer cascade was moved onto Apple's maintained vDSP signal-processing routines. The sound you hear is unchanged — this keeps the audio path leaner and easier to maintain.

A correction-focused fix. In earlier versions, choosing an equalizer preset or editing bands by hand could quietly overwrite the hearing correction derived from your audiogram — leaving you listening through the preset alone. This release makes your audiogram correction its own layer that always stays applied: equalizer presets and manual tweaks now sit on top of it rather than replacing it. It also makes the on-screen curves easier to read.

Fixes

  • Your hearing correction is no longer overwritten by EQ presets or edits. The correction calculated from your audiogram is now kept separate from the equalizer, and the two are combined when you listen. Picking a preset, dragging bands, or clearing the equalizer changes only the equalizer — your hearing correction stays in place.
  • An entered audiogram always produces a correction. Profiles that had an audiogram but were showing a flat correction — for example after clearing equalizer bands — now rebuild the correction from your stored thresholds automatically.

Improvements

  • A clearer picture of what you hear. The equalizer chart now shows a combined Result line — your hearing correction and equalizer together — as the main curve, with an optional Breakdown view that separates the correction and your equalizer into their own lines.
  • Easier-to-read curves, per ear. Each curve type now has its own line style and each ear its own color, with a new on-chart legend that labels them. The encoding is designed to stay clear for color-vision differences.
  • More complete in-app Help. New and corrected Help articles for Speech EQ, Advanced EQ, and Listening Comfort, with fixes to several documentation inconsistencies.

A security-hardening release. SherlockEQ runs without the macOS sandbox so it can tap system audio, which means its helper surfaces deserve extra care. This update tightens how the command-line tool talks to the app, what files that channel can touch, and the permissions on the app's own data — closing the findings from a focused security review. There are no changes to how EQ, profiles, or safe-listening work.

Security

  • The command-line control channel is now authenticated. The sherlockeq tool talks to the running app over a local channel that previously accepted any message from any program on your Mac. The app now issues a private, per-launch token that only your account can read, and ignores any request that doesn't present it — so another program can't quietly drive SherlockEQ on your behalf.
  • Profile import and export stay where they belong. Importing and exporting profiles through the command-line tool now accepts only real .json files and won't follow a symlink in place of the target. This prevents the app from being tricked into overwriting an unrelated file or reading something it shouldn't.
  • Downloaded headphone-correction files are kept inside their cache. Entries fetched from the online AutoEQ catalog are sanitized before being written to disk, so a malformed or tampered catalog entry can't place a file outside SherlockEQ's own cache folder.
  • Your data folders are now private to your account. The folders SherlockEQ creates for your profiles and cached corrections are created — and existing ones tightened — so only your account can read them. Profiles can encode details about your hearing; they shouldn't be readable by other users on a shared Mac.

A large bug-fix release from a full code audit. It protects your saved EQ work, makes the daily listening-safety tracking dependable across restarts and midnight, and hardens profile and headphone-correction importing.

Fixed

  • Editing an audiogram no longer erases your manual EQ. Adjusting a hearing-threshold point used to overwrite every band you had tuned in the Simple, Speech, Advanced, or Expert tabs. The audiogram now updates only its own bands and leaves the rest of your EQ intact.
  • Linked left/right channels stay truly in sync. In Expert, adding, removing, or dragging a band with channels linked now mirrors to the other ear correctly instead of letting the two ears drift apart or overwriting an unrelated band.
  • Your daily listening dose is remembered. The safe-listening dose now persists across app relaunches within the same day, rolls over at midnight even when no audio is playing, and counts time more accurately across pauses — so a high-exposure day is tracked honestly.
  • Safe-listening alerts aren't missed at startup. A notification triggered moments after launch is no longer dropped while notification permission is still being checked.
  • Importing profiles and headphone corrections is more robust. Shared or hand-edited profile files load even when they omit internal ids, AutoEQ files whose filters omit a Q value now import fully instead of partially, and the correct correction is matched when the catalog has two headphones with the same name.
  • The Expert EQ graph shows its full range. Bands set to the ±24 dB extremes are now drawn and stay draggable on the curve instead of being silently clamped to ±18 dB.
  • The tinnitus-notch preview shows the correct ear. With separate per-ear notches enabled, the Expert graph now shows the notch for the ear you're editing rather than always the left.
  • Diagnostic and calibration tones behave across device changes. The test tone and SPL-calibration tone now stop cleanly when you switch output devices or the Mac sleeps, instead of getting stuck "on" with no sound or quietly corrupting an in-progress calibration.
  • Cleaner audio recovery and rarer edge cases. Audio now self-heals after a brief interruption instead of staying choppy, a rare feedback-loop condition at startup is prevented, and an output-permission change mid-session is handled without leaving the audio engine in a bad state.
  • A profile that can't be loaded is reported, not hidden. If a profile file fails to load, SherlockEQ now tells you instead of silently dropping it from the list.
  • Smoother VU metering and immediate diagnostic toggles. The analog VU needle no longer jumps after sleep/wake, and signal-chain bypass switches take effect immediately while a diagnostic tone is active.
  • Command-line tool: install is safer. sherlockeq install now refuses to overwrite an unrelated file at the target path instead of replacing it.

A bug-fix release focused on audio output reliability — especially when you use an audio interface or mixer, or switch between output devices.

Fixed

  • Audio interfaces and mixers now play correctly. When the output device was an interface with its own inputs (for example a RØDECaster Pro II), SherlockEQ could play static or sound in only one ear. It now reads the correct audio channels regardless of the device's input layout.
  • Switching output devices is seamless. Changing your output — speakers to an interface to headphones, and back — while audio is playing no longer leaves sound in a broken state that required relaunching the app. The audio engine now rebuilds cleanly on every device change.
  • Profiles survive an unavailable custom folder. If you moved your profiles to a custom folder that later became unreachable (an unmounted drive, or a temporary location cleared on restart), SherlockEQ now falls back to the default folder and keeps your profiles instead of showing an empty list.

A visual refresh: SherlockEQ has a brand-new app icon, an updated onboarding video, and now follows your system accent colour.

Changed

  • New app icon. A glassy lens over a glowing teal-to-blue waveform on a dark field, rendered cleanly at every size from the Dock down to the menu bar.
  • Refreshed onboarding video. The intro that plays the first time you launch SherlockEQ has been re-recorded.
  • Follows your system accent colour. SherlockEQ no longer forces its own gold accent — highlights, toggles, and sliders now use whatever accent colour you've chosen in System Settings.

This release sharpens the two parts of SherlockEQ that turn your input into sound: the audiogram-based personal correction now uses a real, citable prescription instead of a rough rule of thumb, and dragging EQ bands now produces clear, named undo steps so you can walk back individual tweaks without losing the rest of your edits.

Added

  • Descriptive undo for EQ band drags. Adjusting a band in any of the EQ views now records an undo entry labeled with the band you actually changed — "Adjust Bass", "Adjust 1 kHz", and so on — instead of a generic "Edit". Quick back-to-back drags still coalesce into a single step, so one undo cleanly reverses one gesture.

Changed

  • More accurate audiogram-to-EQ correction. The audiogram screen now derives your per-ear EQ from a well-established hearing-aid fitting prescription that is frequency-aware: it eases off in the low end where extra boost only muddies speech, and emphasizes the ranges where added clarity actually helps. The strength slider scales the whole prescription up or down so you can dial in what sounds best to you. If you already use an audiogram-based profile, it keeps its current correction until the next time you edit your audiogram — at which point it's recomputed with the new prescription.
  • Closely-spaced bands no longer over-boost. At higher frequencies the audiogram's measurement points sit close together, and neighboring EQ bands overlap. SherlockEQ now compensates for that overlap when fitting the curve, so the sound you hear matches the target instead of stacking up into an exaggerated treble.

This release reworks the first-launch experience and the menu-bar popover. Onboarding now opens with a short intro video and ends with a clear "here's where SherlockEQ lives" wayfinding step, and the popover gains an obvious button for opening the main window.

Added

  • Intro video on the welcome screen. Onboarding now opens with a short branded clip that plays once and holds on its final frame, giving new installs a proper first impression before the setup cards.
  • "You're all set" wayfinding step. Onboarding now ends with a step that points at the menu-bar icon and the main window, so it's obvious where SherlockEQ went after the setup window closes — no more wondering whether it quit.
  • Explicit "Open Main Window" button in the popover. The menu-bar popover now has a clearly labeled button at the bottom for opening the full main window, paired with Quit. The hard-to-spot arrow glyph in the header is gone.
  • Tagline, copyright, and license in the About panel. Choosing "About SherlockEQ" from the app menu now shows "Find your sound.", a copyright line, and the MIT license notice under the version number.

Changed

  • Personalization step is now informational. The audiogram, tinnitus, and calibration rows in onboarding used to deep-link out, which cut the walkthrough short. They now describe where each adjustment lives in the main window so you actually reach the final step.
  • Cleaner profile sidebar. The tag pills (voice, music, clarity…) have been removed from the profile list rows so more profiles fit at a glance. The same tags still appear on the profile detail view.
  • Tidier popover footer. "Open Main Window" and "Quit SherlockEQ" now share a single aligned layout and consistent text color, so the two actions read as a matched pair.
  • Updated acknowledgments. Settings → Acknowledgments now credits Sparkle (the in-app updater), Swift Argument Parser (the bundled sherlockeq command-line tool), and App Intents (Shortcuts and Siri actions), and refreshes the copyright line.
  • Welcome tour replay moved out of Settings. The "Replay intro" row in Settings → About has been removed; replay is still available from the Debug screen.

The biggest update since launch. A first-launch guide walks you through setup, four ready-to-use listening presets replace the old starter profiles, and SherlockEQ now plugs into Shortcuts, Siri, and Spotlight so you can drive it hands-free or from your own automations.

Added

  • A first-launch walkthrough. New installs now open a short three-step guide: a welcome that explains how SherlockEQ sits in your audio chain, a plain-language primer on the permissions it needs before the system asks for them, and a pick from the new built-in presets to get you listening right away. You can replay it any time from Settings → About.
  • Four built-in listening presets. Voice Clarity, Music Balanced, Gentle Listening, and Presence Boost replace the old Default and Voice Clarity profiles. Each is a comfort and clarity shape on the 10-band equalizer — not a medical correction — and Music Balanced is the starting point for new installs. Existing presets are brought up to date automatically when you upgrade.
  • Shortcuts, Siri, and Spotlight support. SherlockEQ now offers a full set of actions you can use in the Shortcuts app, ask Siri to run, or trigger from Spotlight: toggle Reference Mode, set or nudge the master volume, set balance, switch the active profile, read the current profile and status, and adjust the Simple equalizer. If the app is closed, the action launches it quietly in the background so your EQ actually takes effect.

Changed

  • Built-in presets are now yours to edit. The built-in presets are no longer locked — tweak any of them in place to taste. A new Reset to Default button restores a single preset to its factory shape, and you can bring back any you've removed from the Profiles toolbar. Edited built-ins are marked with a star so you can tell them apart at a glance.

A maintenance release that polishes the Analog Control Unit. The OUTPUT row now lists only real speakers instead of macOS's internal audio plumbing, the menu-bar popover is easier to read, and there's a new in-app guide for the sherlockeq command-line tool added in 0.3.2.

Added

  • A Command-Line Tool help article. The in-app Help (and the website) now has a full guide to sherlockeq — how to install it, every command at a glance, and a few ready-to-use scripting workflows.

Changed

  • The menu-bar popover is easier to read. The output-device label and the Quit button are larger and clearer.
  • Debug is now opt-in. The Debug screen is hidden from the main window's sidebar by default; turn it on under Settings → Diagnostics if you want it. When enabled, it now shows a live dynamics readout, per-stage signal-chain bypass switches, and a tidier layout.

Fixed

  • The OUTPUT row only shows real speakers now. macOS quietly creates temporary internal devices to route the default output; these were leaking into the panel as a stray button with a question mark. They're now filtered out, so you only see devices you can actually pick. Any device that isn't recognised shows a generic speaker icon instead of a question mark, and the row is capped at six buttons so it can't overrun the panel.
  • The spectrum analyzer panel opens and closes cleanly. Toggling it quickly could leave the window and the arrow out of sync — the panel showing while the window stayed short, or vice versa. It now stays in step no matter how fast you click.
  • Tables render properly in Help. Markdown tables (including the ones on the Keyboard Shortcuts page) were showing as raw | a | b | text; they're now laid out as real tables.

This release adds a command-line interface. sherlockeq is a power-user and automation surface for the app — check status, switch profiles, toggle Reference Mode, nudge gain, balance, and the simple EQ, list output devices, import or export profiles, and dump diagnostics for a bug report. The running app stays in charge: the CLI just asks it to report or change state, so anything you do on the command line shows up in the window and the menu bar right away.

Added

  • The sherlockeq command-line tool. sherlockeq status for a one-glance summary; profiles list / active / activate / import / export; bypass on|off|toggle; gain, balance, and simple-eq get/set; devices list / current; diagnostics for a structured snapshot to attach to a bug report; plus launch and quit. Most commands take --json for scripting, return meaningful exit codes, and fail cleanly with a clear message when the app isn't running. Everything is local — no telemetry, no network.
  • It installs with the app. Homebrew (brew install --cask sherlockeq) now puts sherlockeq on your PATH automatically. If you installed the app directly, the tool ships inside the bundle — run "/Applications/SherlockEQ.app/Contents/Helpers/sherlockeq" install once to symlink it onto your PATH.

A focused follow-up to 0.3.0. The Analog Control Unit's OUTPUT row now actually switches your Mac's audio output instead of just labelling it, its COLOR control matches the panel's other switches, and you can quit SherlockEQ straight from the menu-bar popover.

Added

  • Switch audio output from the Analog Control Unit. The OUTPUT buttons now scan for your Mac's available output devices and let you switch between them — built-in speakers, headphones, an external DAC — right from the panel. It sets the system output (the same selection as the menu-bar sound control), and SherlockEQ follows the new device automatically. The lit button is the current output.
  • Quit from the menu bar. A Quit SherlockEQ option now sits at the bottom of the menu-bar popover, so you can quit without opening the main window or hunting through the app menu.

Changed

  • The spectrum analyzer's COLOR control is now a normal switch. It no longer paints the palette onto the switch itself — off is green, on is the colourful palette, matching the PEAK switch beside it.

A big optional addition plus a round of polish. The headline is the Analog Control Unit — a vintage hi-fi front panel you can leave open on the desktop for the five adjustments people understand immediately: volume, balance, bass, mid, and treble. There's also a new in-app Help system, a quick Listening Comfort toggle in the menu bar, and a more readable accent colour in light mode.

Added

  • Analog Control Unit. Open it from Window → Analog Control Unit: warm stereo VU meters, a system-volume knob, balance, and a simple bass / mid  / treble tone on a dark brushed-metal faceplate. It runs on its own isolated profile, so casual knob-twiddling never touches your carefully tuned EQ. The VOLUME knob drives the macOS output level directly; balance and tone map to SherlockEQ's simple EQ.
  • Built-in spectrum analyzer. Click the chevron at the bottom of the Analog Control Unit to slide out a classic rack spectrum analyzer — 31 third-octave bars with a frequency label under each. Switch between a green and a colourful palette, dim the display, dial in sensitivity, and flip between full bars and a moving peak tick.
  • In-app Help. A proper Help menu and contextual ? buttons throughout the app open a searchable help window covering every feature — what it does, how to use it, and the safety boundaries.
  • Listening Comfort toggle in the menu bar. Turn the comfort processors on or off from the menu-bar popover without opening the full window — right next to the Tinnitus Notch toggle.

Changed

  • Accent colour reads better in light mode. The gold accent is now appearance-aware — a deeper gold on light backgrounds so sliders, toggles, and the active sidebar item meet contrast guidelines, with the brighter gold kept for dark mode.
  • Equalizer moved to the top of the sidebar. Audio Processing now lists Equalizer first, then Audiogram, Tinnitus Notch, Listening Comfort, and Safe Listening.
  • Expert EQ shows the spectrum only. The Spectrum / Bars switch is hidden for now; the Expert canvas always shows the live spectrum behind your curve. Bars will return.

Fixed

  • The updater shows real release notes again. "Check for Updates" now renders these formatted notes in the update window instead of loading the GitHub release web page.

The first feature release since 0.1: Listening Comfort — level-dependent processing that shapes sound only while it needs it, instead of permanently re-tuning the curve. Soften a harsh "sss," ease shouty midrange, or lift dialogue over a score — each engages when the triggering sound is present and relaxes when it's gone. Per ear, zero added latency, and the peak limiter stays the ceiling over any boost.

Added

  • Listening Comfort panel. A new sidebar section with three named, preconfigured processors — Speech Presence, Harshness Control, and Sibilance Tamer. Each is just an on/off, a Strength slider, and a Sensitivity slider, with a live activity meter showing how much it's working in the moment. Independent per ear, with the same Separate L/R switch the rest of the app uses.
  • Adaptive, level-independent triggering. Each processor measures its target band against a slow rolling average of that band, so it behaves the same on a quiet podcast and a loud movie — no SPL calibration required. Sensitivity sets how far above that average it reacts; Strength sets how much it does.
  • Dynamics overlay on the Expert canvas. A new Dynamics layer chip draws each active processor's response live, moving under your static EQ curve, so you can watch the comfort tools engage against the spectrum in real time.

Changed

  • Reference Mode and the chain bypass now cover the comfort tools. Reference Mode (⌘B / the title-bar toggle) drops the Listening Comfort stage along with the rest of the chain, so your A/B is still a true comparison against the unprocessed source. A dedicated per-stage toggle lets you turn the comfort tools off while keeping your EQ, headphone correction, and notch active.

Fixed

  • Menu-bar popover lingered behind the main window. Opening the full app from the popover now closes the popover instead of leaving it floating in front of the window.

A look-and-feel release. A new app icon, a Liquid Glass pass over the whole window on macOS Tahoe, and Reference Mode promoted to the title bar so you can A/B against the source from anywhere — not just the Equalizer. Under the hood, the audio engine now shrugs off the transient device hiccups that could leave it silent after a wake or a route change.

Added

  • New app icon. A dimensional gold magnifying glass over a frequency spectrum — sharper at every size from the Dock down to the menu bar.
  • Reference Mode in the title bar. The Bypass toggle moved out of the Equalizer and into the window toolbar, so you can drop to the unprocessed source from any screen. It's renamed Reference Mode to match the popover and ⌘B — one control, three places, same wording. Goes red when active so you always know you're hearing raw audio.

Changed

  • Liquid Glass chrome (macOS Tahoe). On macOS 26 the toolbar controls now render as separate Liquid Glass clusters, the notice banner and layer chips pick up the glass material, and detail content softly fades as it scrolls under the toolbar. Sonoma and Sequoia keep their existing look.
  • Steadier sidebars. Both the navigation sidebar and the monitor gutter are now pinned to a fixed 240 pt and stay put — no width drift between launches, and the primary navigation no longer collapses out from under you.

Fixed

  • Silent engine after sleep or a route change. When the audio device reports a transient "try again" error — common while a sample-rate or output-route change is still settling, or right after waking from sleep — SherlockEQ now retries the engine start automatically instead of surfacing an error and going quiet.

SherlockEQ 0.1.3

A pass over every Equalizer tab — the input (pre-EQ) and post-EQ spectra now ride together behind the curve so you can see what your correction is actually doing to your music in real time. Advanced gets the layer chip strip and tap-to-type gain chips that used to be Expert-only, and a dedicated Bypass button finally lives on the Equalizer surface itself.

Added

  • Live input + post-EQ spectrum overlay. The dry input and the post-EQ output spectra are now both rendered behind the EQ curve on every Equalizer tab — Simple, Speech, Advanced, and Expert. The input layer used to be Expert-only (and off by default); it's now on by default everywhere. The overlay also takes up more of the canvas (50 % → 70 % vertical) so it reads as a real background fill rather than a thin ribbon at the bottom.
  • Bypass button on the Equalizer. A pill toggle now sits at the top of every Equalizer tab — flip it to A/B between your tuning and the raw source without leaving the screen. Goes red + "Bypassed" when active so you can't lose track of which state you're in. Drives the same Reference Mode that ⌘B and the popover already used; nothing new to learn.
  • Layer chip strip on Advanced. Advanced now exposes the same Input / Output / EQ curve / Audiogram target / Safety overlay / Peak callouts chips that Expert has had. Your chip preferences are shared across the two modes — what you toggle in one shows up the same way in the other.
  • Tap-to-type gain chips on Advanced. Each of Advanced's ten octave bands now shows its current gain in a small editable chip above the slider. Tap it, type a value ("+2.5", "−3", "0", a trailing "dB" is fine), press Return — or just click anywhere outside the chip and it commits. Esc cancels. Keyboard nudges (±0.5 dB) work for VoiceOver users too.

SherlockEQ 0.1.2

Moves the system-audio permission into Apple's narrower "System Audio Recording" bucket on macOS 15+, makes audio-engine failures actually tell you what went wrong, and bumps the minimum window size so the Equalizer and Tinnitus Notch screens fit without scrolling.

Changed

  • Permission moved to "System Audio Recording". Previously SherlockEQ asked for "Screen & System Audio Recording" — the same broad permission used by screen-recording apps like Loom and Microsoft Teams. macOS 15 Sequoia introduced a narrower, audio-only TCC bucket called "System Audio Recording" — where Audio Hijack and Audio Routing Kit live — and SherlockEQ now uses that instead. On macOS 14, it appears under Screen Recording in Settings (Apple hadn't split the UI yet); on macOS 15+, it has its own row.
  • Minimum window size bumped (1400×740 → 1400×860). The Equalizer and Tinnitus Notch screens now fit without scrolling at the smallest allowed size.

Fixed

  • "Graph not attached" replaced with the real reason. When the audio engine failed to start, the banner used to say "Audio engine: Graph not attached" — a generic message that masked the actual problem (a format build failure, an unexpected sample-rate mismatch). The engine now surfaces the specific cause so the notice is actionable.

If you installed 0.1.0 or 0.1.1

On first launch after upgrading, macOS will prompt for the new "System Audio Recording" permission. Grant it, then quit and relaunch SherlockEQ — TCC permissions don't take effect for a running process until the next launch.

Your previous grant under "Screen & System Audio Recording" is orphaned but harmless. If you want to clean it up: System Settings → Privacy & Security → Screen & System Audio Recording → select SherlockEQ → click the minus button. Optional.

SherlockEQ 0.1.1

Bug-fix release. Two surfaces in 0.1.0 shipped without Info.plist keys they needed; both are fixed here. No feature changes.

Fixed

  • Check for Updates now works. The 0.1.0 bundle was missing SUFeedURL and SUPublicEDKey, so Sparkle surfaced an "Update Error" dialog and refused to check. Both keys are present in 0.1.1; signature verification is wired against this app's EdDSA public key.
  • Screen Recording permission prompt is now properly explained. macOS requires a usage description (NSScreenCaptureUsageDescription) for any app that captures system audio through Core Audio Taps. 0.1.0 was missing it, which made the prompt either silent or empty depending on macOS version, and the app could not get past the gate even after enabling the permission in System Settings. The usage description is present in 0.1.1 and macOS now prompts with a clear explanation.

Changed

  • The build number (CFBundleVersion) is now derived from the marketing version by the release pipeline, so the bundle and the Sparkle appcast stay in sync across future bumps without manual intervention.

If you installed 0.1.0

After upgrading, clear the stale TCC entries so macOS re-prompts with the new usage descriptions:

tccutil reset ScreenCapture com.shawnbrown.SherlockEQ
            tccutil reset Microphone    com.shawnbrown.SherlockEQ

Then quit SherlockEQ from the menu bar and relaunch. macOS shows the Screen Recording prompt with the usage string. Approve it, then quit and relaunch one more time — Screen Recording does not take effect for a running process until the next launch.

0.1.0 changelog

For the full feature list shipped at 0.1.0, see the 0.1.0 release notes.

SherlockEQ 0.1.0

First public release. SherlockEQ is a per-ear audio equalizer for macOS, useful for anyone who wants better control over how their Mac sounds — not only listeners with hearing differences or tinnitus. It taps system audio through Apple's native Core Audio Tap API. No virtual driver, no kernel extension, no audio-routing setup. Use the master gain by itself, or layer in audiogram-shaped curves, tinnitus notch filtering, AutoEQ headphone correction, and dose tracking — as few or as many features as you want.

What's in 0.1

Equalization

  • Independent left and right EQ chains, implemented as Direct Form II Transposed biquad cascades. No AVAudioUnitEQ on the user-signal path — real per-channel separation, not coupled stereo processing.
  • Four EQ modes per profile: Simple (bass / mid / treble shelves), Speech (six speech-frequency bands with presets), Advanced (ten octave-spaced parametric bands), and Expert (any band, any frequency, any filter type — keyboard-driven).
  • AutoEQ headphone correction upstream of the profile EQ. Imports the standard ParametricEQ.txt format.
  • Master output gain with a dedicated post-limiter stage (-60 dB to +24 dB) and per-profile stereo balance.

Tinnitus

  • Continuous-phase sine sweep across 20 Hz to 20 kHz, fine-tunable to one hertz.
  • Per-ear notch filtering. Set the tone for the left ear, the right ear, or both.

Audiogram

  • Per-ear threshold entry on a log-frequency chart.
  • Translated into an EQ curve in real time with severity bars and a live preview.

Safety

  • NIOSH dose tracking with a remaining-time readout smoothed over short transients (60-second EMA in the power domain).
  • Per-frequency safety overlay on the spectrum, calibration-aware.
  • Menu-bar dose tint and notifications at warning and danger thresholds.
  • Apple AUPeakLimiter on the output bus.

Workflow

  • Menu-bar popover with master gain, balance, profile picker, level meters, and a reference-mode bypass.
  • Main window with profile management, audiogram entry, four EQ surfaces, tinnitus tone finder, safe listening dashboard, and a persistent right-side monitor sidebar.
  • Profile import and export. Undo and redo with per-band coalescing.
  • Built-in profiles cannot be edited; duplicate to customize.
  • Device auto-switch when a profile is linked to an output.

Accessibility

  • VoiceOver and keyboard control across every custom canvas and drag surface, including audiogram entry, EQ band sliders, and the tinnitus sweep.
  • Color-blind redundant encoding on safety zones (icon plus position, not just color).
  • Reduced-motion guards on transitions. Dynamic Type respected on labels.

What's not in 0.1

  • Onboarding wizard. First launch goes straight to the main UI; you will be prompted for Microphone and Screen & System Audio Recording permissions cold. The second prompt is non-obvious — macOS requires it for any system-audio capture. SherlockEQ does not record video or screen contents.
  • Localization beyond English. The String Catalog infrastructure is in place; translations are not yet wired.
  • Spectrogram visualization. Code is present but disabled pending a performance and UX revision.

Requirements

  • macOS 14.6 or later
  • Apple Silicon or Intel (universal binary)
  • Microphone permission and Screen & System Audio Recording permission

Acknowledgments

NIOSH dose math. Audio EQ Cookbook (Robert Bristow-Johnson) for biquad coefficients. AutoEQ project, oratory1990, and Crinacle for headphone correction profiles.