finds.dev← search

// the find

cromaguy/Rhythm

★ 985 · Kotlin · GPL-3.0 · updated Oct 2026

Your Music, Your Rhythm. An open-source, privacy-first Android music player featuring a beautiful Material 3 Expressive UI. Built entirely in Kotlin.

Rhythm is an Android music player for people with a local music library, built on Media3 ExoPlayer and Jetpack Compose with a Material 3 UI. It also has an optional streaming mode for Subsonic, Navidrome and Jellyfin servers, and it ships under GPL v3 through F-Droid, IzzyOnDroid, GitHub and Google Play.

- The audio chain is the part worth reading. Media3 ExoPlayer handles gapless playback, custom AudioProcessors cover bass boost, mono downmix, spatialization and ReplayGain (with its own cache), and an FFmpeg decoder picks up formats the platform decoders skip, including EAC3-JOC.

- The 6000-plus EQ device profiles come from a bundled autoeq_profiles.json asset, not a network lookup, so the preset feature works offline. That fits a player that sells itself on privacy.

- The streaming providers (SubsonicApiClient, JellyfinApiClient) sit under data/provider behind a StreamingMusicRepository interface in domain/. That is the layering you want if you plan to add a third server type.

- Build variants are separate source sets (src/fdroid, src/github) rather than runtime flags, so the Play and F-Droid builds can differ at compile time.

- The privacy claim needs a closer look. The network layer has clients for Deezer, iTunes, Spotify search, YouTube Music, LRCLib, BetterLyrics, Apple Music canvas and Wikipedia, and each one sends artist or track names off the device. The README says which builds include which lookups, but not what each one sends or whether it can be turned off.

- The README is mostly marketing: badges, a donation table, a screenshot grid and a feature table. The build instructions live on the wiki, so a contributor has to leave the repo to compile it.

- The Google Play build drops the Deezer and YouTube Music artwork and the LRCLib lyrics, as the README states. Most people install from Play, so most people get the reduced version.

- Almost everything sits in one app module, with feature packages as the only boundary. The feature list already spans streaming, widgets, a hearing-safety guard and tablet and foldable layouts, so build times and cross-feature coupling are likely to keep growing.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →