Releases: Booloo26/BitPurfect
Release list
BitPurfect 1.1 — 48 kHz fallback for other apps
Audio that isn't Apple Music no longer gets resampled.
What's new
48 kHz fallback for other apps. In 1.0, when Apple Music stopped, the DAC stayed on whatever rate the last track needed — so a YouTube video or a podcast played through a device still parked at 88.2 kHz, resampled the whole way. BitPurfect now drops the device to 48 kHz whenever a non-Music app takes over the audio, which is what video, web audio and system sound are authored at. Apple Music takes the rate back on the next track.
There's a switch for it in the panel — 48 kHz for other apps — on by default.
A new panel reading, "Other app." Rather than showing an idle state or judging bit-perfectness that doesn't apply, the panel names whatever has the audio and says where the rate is parked and why. The screenshot above is exactly that: Safari playing, DAC at 48 kHz, and the sub-line honestly reporting 32-bit · Fallback because that output offers only a 32-bit container at 48 kHz.
Smaller changes
- Safari identifies itself to macOS as
com.apple.WebKit.GPU("Safari Graphics and Media"); it's relabelled to just Safari - The anti-pop stream now writes silence under any app's audio, not only Apple Music's
- A pinned rate still wins over everything, and with nothing playing the rate is left alone so pausing doesn't make the DAC re-lock
Everything from 1.0 is unchanged: sample-rate matching, clock-family-aware fallback, rate holding, and anti-pop for sensitive IEMs.
Two limits worth knowing
- It only sees apps that publish now-playing. Browsers, Spotify, Podcasts, TV and most media players do — Safari is verified. QuickTime playing a plain audio file publishes nothing at all, and neither do games or alert sounds. For those the rate is left where it is rather than guessed at.
- The 24-bit part is best-effort. Bit depth can only be set through a stream's physical format, and a device only offers what its driver publishes — every output on the test machine exposes a 32-bit container at 48 kHz and no 24-bit at all. The rate always moves; the depth is set only where the device genuinely offers it, and the panel reports what actually happened.
Install
macOS will block this on first launch — it's signed with an anonymous (ad-hoc) signature and not notarized.
- Drag BitPurfect to Applications and double-click it. macOS refuses.
- Open System Settings → Privacy & Security, scroll to the message about BitPurfect, click Open Anyway, confirm.
Or from a terminal:
xattr -d com.apple.quarantine /Applications/BitPurfect.app
Nothing leaves your machine — no network access, no analytics, no accounts.
Requirements
- Apple Silicon Mac (arm64 only)
- Apple Music with Lossless enabled
- No admin account needed
Verified on macOS 27.0 only. Detection reads a Core Audio log line whose wording Apple could change in any release.
BitPurfect 1.0
Keeps your DAC on the same sample rate as whatever Apple Music is playing — and stops it clicking between tracks.
Anti-pop, for sensitive IEMs
If you use efficient IEMs on an outboard DAC, you know the click when the music pauses or a track ends. That's the DAC powering its output stage back up after going idle — the relay closing, charge pumps spinning up — and the more sensitive your IEMs, the more of it you hear.
BitPurfect holds a silent stream open so the DAC never falls asleep. While music plays it writes exact digital zeros, so a bit-perfect path stays bit perfect; only when idle does it write dither at roughly -120 dBFS, for DACs that listen for digital silence rather than an idle USB stream. Wired external DACs only — the built-in jack, Bluetooth and AirPlay are skipped.
It cannot remove the click some DACs make when re-locking to a new sample rate; that's inherent to following the source. If yours does that and you'd rather have silence than bit-perfect playback, pin a rate with Force output rate.
Also in this release
- Follows the source rate: 44.1 / 48 / 88.2 / 96 / 176.4 / 192 kHz and beyond
- Picks an integer ratio when it can't match exactly — 176.4 kHz on a 96 kHz-max DAC goes to 88.2 kHz (clean 2:1), not the numerically closer 96 kHz
- Puts the rate back if Audio MIDI Setup or another app changes it
- Says plainly when playback isn't bit perfect, and why
- Four themes, including Liquid Glass on macOS 26+
- Launch at login
Install
macOS will block this on first launch: it's signed with an anonymous (ad-hoc) signature and not notarized.
- Drag BitPurfect to Applications and double-click it. macOS refuses.
- Open System Settings → Privacy & Security, scroll to the message about BitPurfect, click Open Anyway, confirm.
Recent macOS removed the right-click → Open shortcut, so that's the only route. From a terminal instead:
xattr -d com.apple.quarantine /Applications/BitPurfect.app
Nothing leaves your machine — no network access, no analytics, no accounts.
Requirements
- Apple Silicon Mac. arm64 only; a universal build needs full Xcode (see the README for why)
- Apple Music with Lossless enabled (Settings → Playback → Audio Quality)
- No admin account needed
Known limitations
- Verified on macOS 27.0 only. Detection reads a Core Audio log line whose wording Apple could change in any release. Nothing below 27 has been tested.
- Lossy streams report no rate at all — only the lossless decoder logs one — and the panel says so rather than guessing.

