Riff

A personal Android music & audiobook player

Your music.
Less fiddling.

Big buttons. Simple navigation. Built for a head unit that doesn’t always get a polite shutdown.

Latest build: FINAL 261018  ·  1.0.2  ·  104.4 MiB
Android 12+  ·  GPL-3.0-or-later  ·  SHA-256  ·  Source code

Riff’s desert-wave icon: a pale star above warm sand and amber waves

A little sand. A little sound.Riff

Made to solve
my own annoyance.

I built Riff because I wanted to listen to my own music and books without wrestling with the player. It started in my car. Turns out simple navigation and buttons you can actually hit also make sense at the gym, on a bike, or at the beach with a Bluetooth speaker.

From the actual head unit

No artist’s impression.

Seven screens, two themes. Captured on an Android head unit running Riff 1.0.2 FINAL (261018), including calibration with a bank card. Tap a screen for the full-size PNG.

1280 × 800 · Actual head-unit screenshots, captured October 22, 2026. Original pixels.

Ten things that make it worth having

A player that leaves you
to the listening.

  1. 01

    It remembers the important bits.

    A head unit can lose power without asking. Riff saves listening state as it goes and resumes supported album and book contexts from the last saved position.

  2. 02

    Buttons for actual fingers.

    Gloves, sweaty hands, a screen at arm’s length. Large, high-contrast controls beat another tiny icon you have to aim at.

  3. 03

    Very little to figure out.

    Pick a section, find something, press play. The interface borrows more from machine controls than from a design-award mood board.

  4. 04

    Your files. Even without a signal.

    Music lives on your device or a selected drive. Listening needs no account, subscription or internet connection.

  5. 05

    Books get their own space.

    Chapters when available, bookmarks, remembered positions and 0.7–1.5× playback with unchanged pitch. A novel stays out of music shuffle.

  6. 06

    Long lists need fewer swipes.

    The A–Z keypad narrows the list you are browsing with groups of Latin and Cyrillic letters. No tiny keyboard required.

  7. 07

    A queue stays a queue.

    Play an album, a folder or a playlist. Background indexing and later edits don’t quietly replace the selection already playing.

  8. 08

    Three people, three sets of tastes.

    Profiles keep separate preferences, playlists, history and bookmarks over the same collection. Seasonal bans needn’t delete your Christmas albums.

  9. 09

    Less reaching for the volume knob.

    ReplayGain helps even out level changes between tracks. There’s no home-made equalizer pretending to replace a proper DSP.

  10. 10

    AI, if you feel like it.

    Offline mood selection makes a fresh queue from your own music and reactions. I work with ML and wanted to try it. You can happily ignore it.

Fair questions

FAQ, minus
the sales pitch.

Some choices are deliberate. Some are the result of a fairly stubborn head unit.

Read the complete project FAQ ↗
How do I install it?

Download the APK above and open it on an Android 12+ device to start installation. This is the signed 1.0.2 release, using the same signing identity as existing Riff releases.

Why another music player?

I wanted my own collection to work on my Android head unit, including places with no reception. Tiny controls annoyed me, repeating the same album got old, and losing my place in a long book was particularly unhelpful. Riff is what happened next.

Why does it look so… functional?

Because hitting a button on the first try is the point. Think milling-machine control panel, with a little aircraft-instrument influence. Seriously. Useful in a car; also useful at the gym, on a bike, or beside a Bluetooth speaker at the beach.

What happens if the power just disappears?

Riff saves progress periodically and restores supported listening contexts from the last saved state. The most recent unsaved seconds can still be lost. Handling abrupt shutdowns is a central design goal, rather than a promise that every possible failure is harmless.

Internet? Account? Subscription?

None needed for listening. Bring your own local files. Analysis happens on the device; your music isn’t uploaded. There’s no paid tier with the useful buttons held hostage.

Is AI the whole point?

No. Reliable playback, simple navigation and large controls come first. AI is an extra I added because I could, and because ML is part of my day job. This is a player with an experiment attached.

What does the AI actually do?

An offline EfficientAT-based model estimates energy, emotional tone, perceived speed and genres. The selector combines those estimates with the active profile’s likes, dislikes, exclusions and listening history to make a finite queue. It’s beta quality, and it can be wrong. It does not retrain a personal neural network every time you press Like.

Can I listen to audiobooks?

Yes. Books have their own browsing mode, saved positions and bookmarks, plus supported chapter metadata. Playback speed runs from 0.7× to 1.5× in 0.1 steps, with pitch preserved and silence skipping. Use the Music and Book icon buttons to correct detection; tap the selected button again for Auto.

What’s the A–Z thing?

A letter filter for the current list. Choose a group, then narrow it further until the result is manageable. It supports Latin and Cyrillic letters and can open automatically for long lists. It doesn’t recursively search your entire drive.

Can two people disagree about the music?

Absolutely. There are three profiles with separate preferences and listening state. Ban a genre in one profile and keep it in another. Bans affect later automatic selections; you can still play the file yourself. Switching profiles leaves the current queue alone.

Where’s the equalizer?

There isn’t one. I would rather leave serious sound processing to software and hardware designed for it. ReplayGain is here to make track levels less annoying, not to turn Riff into an audio laboratory.

Does it rewrite or delete my audio files?

Indexing reads the audio and stores Riff’s own data separately. Display-text repair doesn’t retag your files. Removing a selected music folder removes access, not the music. Where writing is allowed, Riff may create a small identification folder.

Is this Android Auto or certified AAOS?

Direct installation on an Android head unit is the intended starting point. Complete Android Auto or AAOS host integration has not been established. Car-interface guidance influenced the controls; that is not host certification. Phones and tablets need Android 12 or newer.

Is the project finished?

Version 1.0.2 simplifies the Music/Book menu and keeps the status line enabled by default. Some validation and vehicle-host integration work remain open, and the AI model remains public beta.

Can I build it, change it or share it?

Yes. The source snapshot, build instructions and full GPL text are below. Riff’s first-party code is GPL-3.0-or-later. Imported components keep their own notices and terms, all retained in the source tree.

Was AI used to write the code, too?

Quite a lot. I used ChatGPT for much of the implementation. The architecture, UX decisions, model work, awkward hardware fixes and the rules about what the player should do are mine. Typing every loop by hand wasn’t the interesting part of this project.

How it works

TL;DR

Longer than an FAQ answer: plain-language explanations of Riff’s architecture and the reasons behind its decisions.

Everyday listening without surprises, Player and Indexer communication, probabilistic music selection, and technical questions about Riff's design.

Under the hood

The whole source.
A fresh start.

This is a clean snapshot of main, with one new root commit and none of its original Git history. Build scripts, tests, model assets and third-party notices are included.

FINAL 261018 · 1359 files · 31.8 MiB archive

Clone it from this site

git clone https://roadio.link/repo/riff-b0f88fe6332b180453eefcbf9cc9f97b53573a0d.git

Riff’s first-party code is GPL-3.0-or-later. The complete license is here for reference; upstream components retain their own terms.

1280 × 800 · Original pixelsDownload PNG ↓