An Android music player with a Rust audio engine. Bit-perfect PCM and native DSD to USB DACs, hi-res on DAPs, plus a full DSP chain.
Builds at GitHub Releases or the Play Store.
- Rust audio engine — bit-perfect USB DAC output (UAC 2.0), native DSD (DSF/DFF/WavPack), DoP, and DAP hi-res via Oboe/AAudio exclusive mode. Falls back to Android's standard pipeline when needed.
- 31-band parametric EQ with dynamics (compressor/limiter), convolution reverb from IR files, crossfade, and gapless playback.
- Library — MediaStore scanner with differential sync, removable storage (SD/USB) via SAF, metadata editing that writes back to files, album art from MusicBrainz/iTunes/Deezer. CUE sheet support, EAC rip logs, duplicate detection.
- Lyrics — search via LRCLib.net, synced LRC editor, plain text fallback.
- Widgets — mini player, compact, and full-size widgets that work when the app is killed.
- Flick Replay — daily/weekly/monthly/yearly listening recaps you can save as PNG.
- Last.fm scrobbling, adaptive theming from album art, star ratings, sleep timer, waveform seek bar, FFT visualizer, vinyl disc animation.
- Receives playback handoffs from Latch.
Flutter (Riverpod, just_audio, Isar) on the frontend. Rust (Symphonia, rusb, cpal/Oboe, lofty) on the backend, bridged with flutter_rust_bridge. Android-only, minSdk 26.
flutter pub get
cd rust && cargo fetch && cd ..
flutter runOr flutter build apk --release.
docs/DSD_ARCHITECTURE.mddocs/LIBRARY_SCAN_ARCHITECTURE.mddocs/hardware_volume_control.mddocs/uac2/
MIT. No ads, no premium features, no tracking.
I build this with OpenCode. It writes some of the comments and docs, and it's bailed me out of more than a few nasty-ass bugs. The code, the design calls, and the fuck-ups are all mine.
