An emotional music player for Android, made with intention
Touch, swipe, drag, double-tap, and slide your way through Bandcamp, YouTube, and your local library.
Play your music from a single, snappy and emotional interface no matter the source: bandcamp, youtube music, or just your local music folder. See your favorite artists, albums, playlists and songs in a single page and add songs to your playlist without worrying about where they come from, all in a nicely designed, lightweight (4mb), extremely fast and no-nonsense GPLv3 Material you 3 Expressive app.
Pre-alpha. Report any bugs. We will add more sources once we get out of alpha and have unified the player features.
Download the app here.
We provide progressive streaming, automatic caching (never redownloads a song or album cover more than once) and optional downloads for all platforms. Also, the main music player is pretty intuitive and not boring like other apps.
We have no tracking or bullshit, you choose whether you want to allow music access storage permissions or per-folder access which does not require any storage permissions at all. This software is designed to repesct you and your privacy. We provide instructions to build the app yourself from this repo in the build section.
We heavily follow all Material you 3 Expressive guidelines and recommendations with a touch of expressiveness on top to make it all as much android-native and intentional as possible, though I'm a dev not a designer so feel free to create some Issues for any suggestions. This app apk is around 4Mb, it takes around 32Mb of storage space for the app itself once installed, has configurable caching storage limits and most importantly starts up instantly, no splash screen for 5 seconds on slow devices.
Gestures
- Tap album art to play/pause, double-tap to favorite
- Swipe album art left or right to skip tracks
- Long-press album art to browse upcoming tracks in a carousel
- Drag the seek bar or volume slider to scrub and adjust
- Swipe queue items or playlist tracks to remove them
- Long-press and drag handles to reorder queue and playlists
- Long-press library items for context menus
- Tap stacked covers behind the album art to jump to upcoming tracks
Requirements: Java 21, Android SDK 36
If you just want an apk to install to your device:
git clone https://github.com/Pingasmaster/dustvalve_next.git
cd dustvalve_next
# You have to generate bogus keys to assemble a release apk, you can skip this step for a debug apk but it'll be way slower and larger
keytool -genkey -v -keystore release-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias dustvalve
# Store the password you just chose so the build script can find it
echo "your-password-here" > .password-signing-keys
# Then you can build
./gradlew assembleReleaseFor devs who want to modify, fork and test the app, we have a build script which runs lint, assembles debug and release APKs, copies sthe release APK to the project root as app-release.apk, and auto-increments the version.
./build.shContributions are welcome, but this music player was originally built for myself because I found the bandcamp app to be lacking in design and speed. If it makes sense I'll merge it.
Dustvalve Next is licensed under the GNU General Public License v3.0.
This repository includes a GitHub Actions workflow that builds a signed release APK and attaches it to GitHub Releases automatically. To set it up on your fork:
If you don't already have one:
keytool -genkey -v -keystore release-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias dustvalveGo to your fork on GitHub: Settings > Secrets and variables > Actions > New repository secret, and add:
| Secret | Value |
|---|---|
KEYSTORE_BASE64 |
Base64-encoded keystore. Generate with: base64 -w 0 release-keystore.jks |
KEYSTORE_PASSWORD |
The password you used when creating the keystore |
Go to Releases > Draft a new release, create a tag (e.g. v1.0.0), write release notes, and click Publish release. The workflow will build the release APK and attach it as a downloadable asset.
Note: The workflow only triggers on published releases, not on pushes or pull requests. You can monitor builds in the Actions tab.

