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.

Download

Grab Sonicwave-x.y.z.zip from the latest release, unzip, and drop Sonicwave.app into /Applications. Builds are signed and notarized by Apple — they launch without Gatekeeper warnings.

First launch: open Settings → Connection (⌘,), enter your server address and credentials, hit Test ConnectionSave & Connect. Credentials go straight to the Keychain; your password never travels in a URL, and plain-HTTP servers on your local network work fine. No server yet? Click Use Demo Server to try Sonicwave against the public Navidrome demo.

Highlights

🎧 Serious about audio

  • True gapless playback — album transitions are seamless by construction.
  • Hardware sample-rate matching (Audirvana/Roon-style, on by default): your DAC runs at each track's native rate, nothing gets resampled.
  • Streaming decode of MP3, FLAC, AAC, WAV, AIFF and more — playback starts fast and memory stays flat. Formats macOS can't decode (Ogg Vorbis, …) fall back to server transcoding automatically.
  • ReplayGain volume normalization (by track or by album), applied losslessly in the engine with peak protection.
  • Robust output routing: pick any output device — AirPlay routes included — and unplugging or replugging a USB DAC mid-track recovers automatically. Your system-default device is never touched.

📚 A library you can drive

  • A Home page to land on: Jump Back In, Keep Listening, Recently Added, Most Played, and a Random shelf with a re-roll button.
  • Dense, sortable track table: double-click or ⏎ to play, ⌥-double-click to queue next, multi-select, drag to playlists. Multi-disc albums get disc headers.
  • Column browser (Genre → Artist → Album), global search (⌘F), quality badges ("FLAC", "320 kbps") with lossless-first sorting. Filter the Albums grid by genre or decade, or Shuffle Library for a fresh 500-song mix of everything.
  • Server playlists round-trip fully: create, rename, reorder, delete.
  • Favorites everywhere, with a ★ column.
  • Scrobbling (on by default) feeds your server's play counts and Last.fm-style history; kick off a server library scan right from the app (File → Update Server Library).

🖥 A proper Mac citizen

  • iTunes-style "LCD" in the toolbar; a resizable Now Playing panel with a reorderable Up Next queue; a menu-bar player that works with the window closed. Click the panel's artwork to Quick Look the cover at full resolution.
  • Media keys, Control Center / Now Playing widget, live artwork.
  • Your queue survives relaunches — saved server-side (with the playhead), so other clients can resume the same session.
  • Light/Dark, full keyboard shortcuts, VoiceOver support, state restoration, sandboxed with a single entitlement (outgoing network).

Requirements

  • macOS 15 Sequoia 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