A native macOS music player for your own OpenSubsonic server.
The interaction design iTunes got right — a dense sortable track list, a column browser, Up Next, fast search — rebuilt as a modern, restrained Mac app. Streaming-only, audiophile-grade playback, no Electron in sight.
Sonicwave connects to a self-hosted OpenSubsonic library (Navidrome is the reference server). It's for people who run their own music server and want a real Mac app — keyboard-friendly, low-footprint, native — instead of a browser tab.
- True gapless playback; streaming decode of FLAC, MP3, AAC, WAV, AIFF — with automatic server-transcode fallback for anything else
- Hardware sample-rate matching (on by default) — your DAC runs at each track's native rate
- ReplayGain volume normalization (track/album) with peak protection
- Output-device picker incl. AirPlay routes; USB-DAC unplug/replug recovery
- Dense sortable track table, column browser (Genre → Artist → Album), global search, quality badges with lossless-first sorting
- Home page shelves; artist pages with bio and similar artists
- Start Radio from any song or artist (server similarity, with fallbacks)
- Shuffle Library (500-song mix) and Shuffle Albums (whole albums, filter-aware); album grid filters by genre/decade
- Server playlists with full round-trip editing; favorites everywhere
- Scrobbling; trigger a server library scan from the app
- Queue saved server-side with the playhead — survives relaunches, resumable from other clients
- Menu-bar player, media keys, Control Center widget, iTunes-style LCD
- Light/Dark, keyboard-first, VoiceOver, state restoration; sandboxed with a single (network) entitlement
- One-click demo server to try it without a server of your own
- macOS 14 Sonoma or later
- An OpenSubsonic-compatible server (Navidrome, Gonic, LMS, Astiga, …)
Actively developed — see the changelog for what's new. Mac App Store distribution is in progress. Deliberately out of scope for v1: offline downloads, smart playlists, multi-server profiles, tag editing.
Swift 6 (strict concurrency), SwiftUI with an AppKit core for the track table, and zero third-party dependencies. Build with Xcode 26, or:
git clone https://github.com/thijsw/sonicwave.git && cd sonicwave
xcodebuild -project Sonicwave.xcodeproj -scheme Sonicwave \
-destination 'platform=macOS' build # or: testThe docs/ directory holds the full design docs — architecture,
the playback-engine deep-dive (gapless + crackle forensics), API layer,
UI/UX rationale — and the running build log
(docs/PROGRESS.md). The test suite runs hermetically —
in CI on every push (tests.yml) — and an
opt-in live suite exercises a real server via SONICWAVE_HOST/USER/PASS
env vars. Releases ship through scripts/release.sh
(archive → notarize → staple) and scripts/publish.sh;
the website redeploys itself from
site/ on every release.
