$ aetherfin --play

Your music.
Your server.
No compromises.

Native Android player for Jellyfin, Navidrome, and local files. Decoded on-device with libmpv. No transcoding, no telemetry, no cloud.

android 7.0+ · jellyfin 10.8+ · navidrome 0.49+ · local mode

Aetherfin Now Playing
$ fft --bands 64 --fps 60
$ dsp --effects 86
$ gapless --enable
// features

$ ls features/

Everything you need. Nothing you don't.

visualizer.sh
$ fft --bands 64 --fps 60
64-band spectrum from actual audio output. No microphone permission needed.
gapless.sh
$ mpv --prefetch next-track
libmpv pre-fetches the next track. Seamless album-side transitions.
dsp.sh
$ dsp --effects 86 --eq-bands 18
18-band EQ, compressor, echo, phaser, flanger, chorus, pitch shift, and more.
lyrics.sh
$ lrc --parse --auto-scroll
LRC parsed on-device with auto-scrolling highlight. Lock-screen too.
servers.sh
$ connect --jellyfin --navidrome --local
Both servers out of the box, or play files from your device.
output.sh
$ dac --bit-perfect --exclusive
Force sample rate, bit depth, exclusive mode. Lossless — no quality loss.
timer.sh
$ sleep --end-of-track
5 to 60 minutes, plus end-of-track mode. Pauses when the song finishes.
privacy.sh
$ audit --telemetry=none
No analytics. No ads. No trackers. Talks only to your server.
// technical

$ cat pipeline.txt

Built on libmpv with a custom Dart-side audio pipeline.

audio_pipeline.txt
# Aetherfin audio pipeline # Direct stream → libmpv decode → DSP → output source: raw_bytes://your-server/audio.flac ↓ decode: libmpv (hardware-accelerated) ↓ dsp_chain: ├── equalizer 18-band graphic EQ ├── compressor dynamic range ├── echo delay/reverb ├── phaser sweep effect ├── flanger modulation ├── chorus multi-voice ├── pitch rubberband engine └── loudness EBU R128 ↓ output: device DAC (bit-perfect) # Supported formats codecs: FLAC, ALAC, OPUS, WAV, MP3, AAC, Vorbis rates: 44.1k, 48k, 88.2k, 96k, 176.4k, 192k depth: 16-bit, 24-bit, 32-bit float
86
DSP Effects
64
FFT Bands
60fps
Visualizer
192kHz
Max Sample
32-bit
Max Depth
0
Telemetry
// comparison

$ diff aetherfin competitors

How it stacks up.

┌─────────────────────┬──────────────────────────┬──────────────────┬──────────────┐
│ FeatureAetherfinFinampGeneric      │
├─────────────────────┼──────────────────────────┼──────────────────┼──────────────┤
│ Format support      │  FLAC,ALAC,OPUS,WAV    │  Most formats  │  MP3,AAC   │
│ DSP / EQ            │  86 effects, 18-band   │  None          │  Basic EQ  │
│ FFT Visualizer      │  64-band, 60fps        │  None          │  None      │
│ Synced Lyrics       │  LRC + auto-scroll     │  LRC           │  None      │
│ Gapless Playback    │  libmpv pre-fetch      │  Yes           │  Gaps      │
│ Local Files         │  SAF folder picker     │  Server only   │  Some      │
│ Navidrome           │  Native REST API       │  Subsonic      │  No        │
│ Telemetry           │  Zero                  │  Zero          │  Often yes │
│ Open Source         │  MIT                   │  MPL-2.0       │  Usually no│
└─────────────────────┴──────────────────────────┴──────────────────┴──────────────┘
// community

$ git log --oneline

★ 2.4k  stars on github
47      contributors
MIT     license
@azrim_ci  telegram
star on github
// install

$ aetherfin --setup

Three commands to music.

$ curl -L https://github.com/.../aetherfin.apk
✓ Downloaded aetherfin-v1.0.apk (24MB)
Grab the latest release. Universal APK works everywhere.
$ aetherfin --mode server|local
✓ Mode selected. Ready to configure.
Connect to a Jellyfin/Navidrome server, or pick a local music folder.
$ aetherfin --play
✓ Now playing: Track 01 — Album Name
Stream from your server or play from device storage.
$ aetherfin --download

Your music deserves better.

No cloud. No subscription. No analytics. Just a polished player.

$ download --latest