2 min read
qbz

qbz is a native, bit-perfect hi-fi player for Qobuz, built in Rust on top of Tauri. It started life as a Linux-only app. I brought it to macOS.

qbz home screen running on macOS

Most of the work was the kind you only notice when it is wrong. Real CoreAudio output with device probing and sample-rate switching, so playback stays bit-perfect end to end. Hunting down a track-change crackle that turned out to be a buffer handover bug. Deep links for qobuzapp://, native notifications with album artwork, x86_64 cross-compilation for Intel Macs, and ad-hoc signing so Gatekeeper stops rejecting the bundle. Each one is small on its own; together they are the difference between “compiles on macOS” and “feels native on macOS”.

Some of it pushed one layer down, into the crates qbz is built on. macOS sample-rate switching needed device-rate enumeration that coreaudio-rs did not expose, so I added it there. Album artwork in notifications needed notify-rust to accept an image path, so I added that too. For a while qbz ran on my forks of both; once the changes were released, it went back to the published crates.

Almost all of the app-level work landed upstream in vicrodh/qbz across a few dozen merged pull requests, starting with the initial macOS support PR. Working in someone else’s audio codebase, in Rust, on a platform it was never written for, was a good reminder of how much careful work sits underneath the word “port”.