/GnarlyMusicPlayer

In pursuit of THE perfect mobile music player

Primary LanguageKotlinMIT LicenseMIT

Gnarly Music Player is a lightweight directory-based music player for Android, focused on quick, intuitive navigation.

Features

  • Based on directory structure
  • Easily editable playing queue (add/move/delete items)
  • Simple context search
  • Simple directory-based bookmarks
  • Read-only playlist support (m3u/m3u8)
  • Export queue to playlist
  • Integration with the default audio equalizer app
  • Seek current track + restore last track position
  • Media buttons support
  • Album art on lockscreen and in notification
  • Tag viewer (based on FFmpegMediaMetadataRetriever)
  • Designed for quick, intuitive use
  • No ads
  • Customizable accent color (including "Material You" on Android 12)
  • (optional) audio-related workarounds (see app settings)
    • Configurable volume step count (in-app volume)
    • Ignore audio focus
    • Bluetooth cracking workaround
    • Prevent OS from killing playback service

Download

Latest release .apk

App description

This music player is highly inspired by Folder Music Player by Suphi (free version no longer available on the Play Store), which lacked a few essential features to become perfect. Gnarly Music Player is an attempt to fill those gaps and create a modern directory-based music player.

This core functionality the same as in Folder Music Player, but there are also many useful tools to efficiently navigate music library and manage playback queue. Visually the app is clean and simplistic, without excessive gradients, margins and animations.

Obviously this app is far from perfect. Code is messy, some functionality is missing, and there are some bugs. This is a hobby project after all. But the ideas behind the UI are pretty solid and the player has proved to be very convenient to use (at least for its creator).

Beware of spaghetti code!

Compatibility note

This app is not guaranteed to work on all Android versions. These days the API related to how media session interacts with the OS changes frequently, so the app might not work as expected.

Changelog

See release notes for each release.

Version names are: major.minor.patch, e.g. 1.2.3. Releases with increased minor number usually contain new features. Releases with increased patch number are usually bugfixes or optimizations.

Builds with a -debug at the end are debug buils (e.g. 1.2.3-debug).

Builds with a -pre at the end are pre-releases/work in progress (e.g. 1.2.3-pre).

Help

See the help page.