Skip to content

Pingasmaster/dustvalve_next

Repository files navigation

Dustvalve Next icon

Dustvalve Next

A free and open-source music player for Android
Bandcamp discovery, YouTube playback, and local music — all in one place.

Min SDK 26 Kotlin Compose M3 Expressive GPLv3


About

Dustvalve Next is a multi-source music player that lets you browse Bandcamp, search YouTube, and play your local files from a single, cohesive interface. It's built entirely in Kotlin with Jetpack Compose and follows Material You 3 Expressive design — spring-based animations, dynamic color theming, and expressive shapes throughout.

Pre-alpha — under active development. Expect breaking changes and rough edges.

Features

Multi-source playback

  • Stream and download from Bandcamp — browse hot releases, search, manage favorites, purchase downloads
  • Play and download from YouTube via NewPipe Extractor — no API key or Google account needed
  • Scan and play local audio files (mp3, flac, m4a, ogg, wav, opus, aac, wma, alac) via folder picker or device-wide MediaStore scanning
  • Multiple local music folder support with per-folder track association

Downloads & caching

  • Progressive download: stream at preview quality, then seamlessly upgrade to full quality in the background
  • Download quality presets: Best quality (preferred format always) or Economical (AAC on metered networks)
  • Unified download behavior across YouTube and Bandcamp sources
  • HQ format selection for purchased Bandcamp content (FLAC, MP3 320, MP3 V0, AAC, Ogg Vorbis)
  • 512 MB LRU media cache with configurable storage limits and cache eviction

Player

  • Queue management with shuffle and repeat (off / all / one)
  • Volume control with inline slider and full-screen volume sheet
  • Audio output device switching
  • Media session notifications and lock screen controls
  • Seamless hot-swap from stream to local file mid-playback

Library

  • Favorites for tracks, albums, and artists
  • Custom playlists with drag-to-reorder
  • System playlists: Downloads, Recent, Collection, Favorites, Local
  • Search history across all sources

Design

  • Material You 3 Expressive theming with MotionScheme spring animations
  • Dynamic color from your wallpaper (Android 12+)
  • Album art color theming — theme the app using colors from the playing track
  • Dark, light, and system theme modes
  • OLED pure black option
  • Wavy animated seek bar
  • Responsive layout — bottom nav on phones, navigation rail on tablets

Privacy-respecting

  • No telemetry or tracking
  • YouTube access through NewPipe Extractor (no Google services dependency)
  • Bandcamp rate limiting to be respectful to servers

Tech Stack

Language Kotlin 2.3
UI Jetpack Compose 1.11 + Material 3 Expressive 1.5
Architecture MVVM · Hilt · Coroutines + StateFlow
Navigation Jetpack Navigation 3
Database Room 2.8
Playback Media3 / ExoPlayer 1.10
Networking OkHttp 5.3 · Jsoup 1.22
YouTube NewPipe Extractor 0.26
Images Coil 3.4
Build Gradle (Kotlin DSL) · AGP 9.2 · KSP · Java 21

Building from source

Requirements: Java 21, Android SDK 36

git clone https://github.com/Pingasmaster/dustvalve_next.git
cd dustvalve_next
./build.sh

The build script runs lint, assembles debug and release APKs, copies the release APK to the project root as app-release.apk, and auto-increments the version.

To build manually:

JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew assembleDebug

Project Structure

app/src/main/java/com/dustvalve/next/android/
├── cache/              Cache eviction policy & storage tracking
├── data/
│   ├── local/          Room database, DAOs, entities, DataStore
│   ├── remote/         Bandcamp scrapers, YouTube extractor, HTTP client
│   └── repository/     Repository implementations
├── di/                 Hilt modules
├── domain/
│   ├── model/          Domain models (Track, Album, AudioFormat, etc.)
│   ├── repository/     Repository interfaces
│   └── usecase/        Use cases (download, cache management)
├── player/             ExoPlayer wrapper, queue, playback service
├── ui/
│   ├── components/     Shared composables
│   ├── navigation/     Route definitions
│   ├── screens/
│   │   ├── album/      Album detail
│   │   ├── artist/     Artist profile & discography
│   │   ├── bandcamp/   Browse & search
│   │   ├── library/    Favorites, playlists, downloads
│   │   ├── local/      Local music browser
│   │   ├── player/     Full & mini player
│   │   ├── playlist/   Playlist detail & reorder
│   │   ├── settings/   Settings & account login
│   │   └── youtube/    YouTube search & playback
│   └── theme/          Colors, typography, shapes, motion
└── util/               Network utils, file helpers, encryption

Automated Releases (for forks)

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:

1. Generate a signing keystore

If you don't already have one:

keytool -genkey -v -keystore release-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias dustvalve

2. Add repository secrets

Go 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

3. Publish a release

Go to Releases > Draft a new release, create a tag (e.g. v0.0.69), 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.

Contributing

Contributions are welcome. Please open an issue to discuss larger changes before submitting a PR.

License

Dustvalve Next is licensed under the GNU General Public License v3.0.

Copyright (C) 2026 Dustvalve Next contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

About

The best free software application for android music management. Uses Material you 3 expressive. Small, lightweight, extremely fast, well thought out for slow internet connections, compatibility for multiple sources.

Resources

Stars

Watchers

Forks

Contributors