Music
Choir
What you own is what you hear.
A local-first music player ported from the AOSP Music app to Kotlin, Compose and Media3. No accounts, no streaming, no recommendations, no telemetry, and no record of what you listen to.
- Version
- 0.5.0
- Licence
- GPL-3.0
- Runs on
- Android 10+
- Origin
- Ported from AOSP Music
See it in action.

Track list 
Albums 
Album detail 
Now playing 
Instant search
What makes it different.
Formats Android forgot
Plays ALAC, Dolby, WavPack, Monkey’s Audio and Windows Media, with readers for AIFF, WavPack, APE and ASF written from scratch. If a file won’t play, Choir says why.
Lyrics, in time
Reads lyrics from .lrc files and ID3v2, Vorbis, MP4 and WAV tags, synced line by line or word by word. Online lookup is off by default and never replaces lyrics your file already has.
Four widgets that never poll
Now Playing, a transport strip, a Liked Songs shuffle, and a widget that shows the lyric line being sung. They redraw only when playback changes.
Typography over ornament
Monochrome throughout: EB Garamond for your music, Inter for the controls. Type sets the hierarchy, not colour.
Built with.
- Kotlin
- Jetpack Compose
- Media3 / ExoPlayer
- Glance