How pranav-lejith/tunes works
Tunes is an Android music player whose main user flow is selecting local or YouTube Music audio, managing it in playback queues, and listening through the app’s player. Its broader capabilities include library scanning and metadata extraction, offline downloads, lyrics, playback effects, Android Auto, and configurable Material 3 theming. The README documents these product-level links; the graph uses dashed, uncited edges where the provided excerpts do not show internal calls. The source index identifies MusicService.kt as read, but its excerpt is not included here.
Main entry points: MusicService.kt Music service · viewmodels View models · screens Screens · LocalMediaScanner.kt Local scanner
Components 19
App interface
- Tunes app
app/src/main/java/com/amphibiar/tunes/App.kt - Screens
app/src/main/java/com/amphibiar/tunes/ui/screens - View models
app/src/main/java/com/amphibiar/tunes/viewmodels - Library UI
app/src/main/java/com/amphibiar/tunes/ui/screens/library - Settings and backup
app/src/main/java/com/amphibiar/tunes/ui/screens/settings
Music library
- Local scanner
app/src/main/java/com/amphibiar/tunes/utils/scanners/LocalMediaScanner.kt - Tag extraction
app/src/main/java/com/amphibiar/tunes/utils/scanners/MetadataScanner.kt - YouTube Music client
app/src/main/java/com/amphibiar/tunes/utils/youtube/YouTubeClient.kt - Song downloader
app/src/main/java/com/amphibiar/tunes/utils/youtube/YoutubeDownloader.kt - Music database
app/src/main/java/com/amphibiar/tunes/db/MusicDatabase.kt
Playback
- Music service
app/src/main/java/com/amphibiar/tunes/playback/MusicService.kt - Player connection
app/src/main/java/com/amphibiar/tunes/playback/PlayerConnection.kt - Queue management
app/src/main/java/com/amphibiar/tunes/playback/QueueBoard.kt - Player UI
app/src/main/java/com/amphibiar/tunes/ui/player/Player.kt
Player capabilities
- Lyrics
app/src/main/java/com/amphibiar/tunes/lyrics/LyricsHelper.kt - Audio effects
app/src/main/java/com/amphibiar/tunes/playback/MusicService.kt - Android Auto
app/src/main/java/com/amphibiar/tunes/playback/MediaLibrarySessionCallback.kt - Dynamic theming
app/src/main/java/com/amphibiar/tunes/ui/theme/Theme.kt
Other components
- Listener
Connections 19
- Listener → Screens: uses
- Screens → View models: requests data
app/src/main/java/com/amphibiar/tunes/ui/screens/settings/fragments/StorageFrag.kt - View models → Library UI: presents library
- Library UI → Local scanner: browses local media
- Local scanner → Tag extraction: extracts tags
- View models → Music database: accesses library
- View models → YouTube Music client: searches music
- YouTube Music client → Song downloader: downloads songs
README.md - Listener → Player UI: controls playback
- Player UI → Player connection: sends commands
- Player connection → Music service: connects to
- Music service → Queue management: manages queues
README.md - Music service → Local scanner: plays local audio
README.md - Music service → YouTube Music client: plays streamed music
README.md - Music service → Audio effects: applies effects
README.md - Music service → Lyrics: supports synchronized lyrics
README.md - Music service → Android Auto: supports Android Auto
README.md - Screens → Dynamic theming: uses theming
README.md - Listener → Settings and backup: configures app