Bones — a precise offline music player
An offline hi-fi player for Android that shows what the audio path really does and learns what you actually listen to.
- product, design, development
- 2026 — ongoing
- Kotlin, Media3, Jetpack Compose, Android
What it changed
- The indicator caught the player itself cutting 24-bit FLAC to 16 bits; fixed in the next version, output is now float
- Bit-perfect USB output on Android 14+, with a plain-language report on what happens to the sound
- 300+ automated tests, screenshots of every screen included
The problem
I listen to my own files — FLAC, MP3, rips I made years ago. Players for that either look like they were built in 2012 or quietly resample everything and don’t say so. None of them would tell me what actually reaches my headphones.
The constraint
Android decides a lot about the sound and admits little: the output format, the Bluetooth codec, whether a USB DAC gets the original bits. The player can only show what the system reports. Anything it has to work out by itself must be marked as an estimate, and what it cannot know it must not invent.
What was built
An offline player around one idea: be honest about the sound. A tap on the audio path opens a report in plain language — what is played, what Android does to it, how to make it cleaner. Around that: crossfade, an equalizer, folders as a library, Android Auto, lyrics, themes, and a “wave” that learns from what you skip and what you play to the end.
What it changed
The honesty paid off right away: the indicator showed that the player itself was losing bits. The next version fixed it. Friends install it from the landing page, and their phones keep finding cases no emulator would.
What I’d do differently
Start with the audio path report, not with the library. Everything else in the player turned out to be a way to keep that report true.