Skip to content

Aetherfin/mobile-app

Repository files navigation

Aetherfin

Your music. Your server. No compromises.

Flutter License: MIT Android

Aetherfin is a native Android music player for Jellyfin, Navidrome, or your local files. It streams your library, decodes everything on-device with libmpv, and stays out of your way.

No cloud. No telemetry. No transcoding. Just playback.


Screenshots

Now Playing Queue Library Lyrics

Demo

demo.mp4

Why Aetherfin

  • Direct stream — serves raw bytes from your server. No HLS, no transcoding, no quality loss.
  • Lossless support — FLAC, ALAC, OPUS, WAV, whatever your library has.
  • Real-time visualizer — 64-band FFT driven by actual audio output. No microphone permission.
  • Full DSP rack — 18-band EQ with presets, compressor, echo/delay, phaser, flanger, chorus, pitch shift, and more.
  • Works offline from Aetherfin's perspective — there's no "Aetherfin cloud." As long as your server is reachable, you're good.

Features

Playback

  • Gapless transitions with background prefetch
  • Shuffle, loop (off / track / queue), playback speed (0.5×–2.0×)
  • Lock-screen and notification controls (artwork background on Samsung/Android 16)
  • Sleep timer with presets and end-of-track mode
  • Instant Mix radio (server-generated similar tracks queue)
  • A-B loop (tap to set start/end markers, tap again to clear)
  • Local file playback — play music from device storage via SAF (no server needed)
  • Auto-pause on Bluetooth disconnect or headphone unplug
  • Instant playback — selected song starts immediately even with large queues

Audio

  • 86-effect DSP rack via mpv's ffmpeg filter pipeline
  • 18-band graphic EQ with built-in and custom presets
  • Echo/delay, phaser, flanger, chorus, tremolo, vibrato, bit-crusher
  • Dynamic compressor, noise gate, de-esser with full parameter control
  • Loudness normalization (EBU R128) and ReplayGain (track/album)
  • Pitch and tempo shifting (rubberband engine)
  • Crossfeed, stereo widening, virtual bass, harmonic exciter
  • Master bypass switch

Library

  • Albums, Artists, Songs, Playlists, Genres, Liked songs
  • Smart playlists — rule-based auto-updating playlists (works in both server and local mode)
  • Search across tracks, albums, artists, playlists
  • Long-press context menus (play next, add to queue, go to album/artist)
  • Drag-to-reorder queue with swipe-to-remove

Home

  • Swipeable hero album carousel (up to 5 recent albums, dot indicator)
  • Recently played tracks, artists, and genres sections

Now Playing

  • FFT spectrum visualizer (64 bars, 60 fps, engine-driven)
  • Artwork pulse on kick drums (sub-bass transient detection)
  • Synced lyrics (LRC, auto-scrolling)
  • Favorite toggle, quality chip, save to playlist

Settings

  • Audio output: sample rate, bit depth, exclusive mode
  • Network: cache duration, buffer size, keep-audio-active
  • Server: connection info, switch server, sign out

Install

Grab the latest APK from Releases or the CI build.

Requirements

  • Android 7.0+
  • Server mode: A reachable Jellyfin 10.8+ or Navidrome 0.49+ server
  • Local mode: Audio files on your device (pick a folder during setup)

First run

  1. Choose mode: Server (stream from Jellyfin/Navidrome) or Local (play files from device)
  2. Server: enter URL + sign in. Local: pick a music folder + scan.
  3. Play something

Build from source

flutter pub get
flutter run --debug

# Release
flutter build apk --release
flutter build apk --release --split-per-abi
# Before pushing
flutter analyze
flutter test

How it works

┌─────────────────────────────┐       ┌────────────────────────────┐
│  Aetherfin (your phone)     │       │  Your server               │
│                             │       │  (Jellyfin or Navidrome)   │
│  libmpv decoding            │◄─raw──┤  Audio files               │
│  Queue, shuffle, gapless    │       │  Metadata, artwork         │
│  FFT visualizer (post-DSP)  │◄─meta─┤  Favorites, playlists     │
│  Lyrics parsing + sync      │       │  Play counts               │
│  Lock-screen controls       │       │                            │
│  DSP effects chain          │       │                            │
│  Cover art cache            │       │                            │
└─────────────────────────────┘       └────────────────────────────┘

The server stores files and metadata. Aetherfin does everything else.


Privacy

No analytics. No ads. No trackers. No Aetherfin servers. The app talks only to the server you configure. Full details in PRIVACY.md.

Community

Telegram

Contributing

PRs welcome. Read CLAUDE.md first — it covers auth, architecture, design tokens, and the rules.

License

MIT. See LICENSE.

Acknowledgements

About

Native Android music player for self-hosted Jellyfin & Navidrome servers. Also support Local Media Playback. Lossless playback via libmpv, real-time FFT visualizer, 86-effect DSP rack, synced lyrics, gapless transitions. No telemetry, no ads, no cloud.

Topics

Resources

License

Stars

Watchers

Forks

Contributors