Skip to content

thijsw/sonicwave

Repository files navigation

Sonicwave

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.

Platform Swift Frameworks Server License

Website · Latest release

Sonicwave playing Abbey Road — track table, column browser and Now Playing panel with Up Next


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.

Features

  • 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

Requirements

  • macOS 14 Sonoma or later
  • An OpenSubsonic-compatible server (Navidrome, Gonic, LMS, Astiga, …)

Status

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.

For developers

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: test

The 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.

License

MIT


Built for people who miss iTunes 12.6 — the patterns, not the chrome.

About

Native macOS music player for your OpenSubsonic / Navidrome server

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors