Skip to content
Arct-DevelopmentPublic

About

A native Android client for YouTube Music. Ad-free streaming, offline downloads, word-by-word lyrics, a parametric equaliser and an automix engine that blends one track into the next.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

470 Commits

Folders and files

KatMusic logo

KatMusic

Your music, with room to make it yours.

A native Android music player built around YouTube Music, with synced lyrics, offline downloads, a powerful audio engine and a highly customisable player.

Hi, I'm ItzFallenMe. I build Android apps, web projects and practical tools — KatMusic is my home for the music-player ideas I want to use every day.

Download v2.6.0  ·  Project website  ·  Changelog

Downloads Android CI Latest release License: GPL-3.0 Stars

Kotlin · Jetpack Compose · Material 3 · C++ · Oboe


About

KatMusic brings streaming, your personal library and advanced playback controls into one Android app. It combines a Compose interface with a native audio engine, so everyday listening and deeper audio controls live in the same place.

Some integrations require you to sign in or provide your own service credentials. Optional AI features use the endpoint and API key you configure.

Contents

Features

Music and playback

  • Browse and play songs, albums, artists, playlists, mixes and podcasts from the YouTube Music catalogue.
  • Background playback with media notifications, lock-screen controls, queue management, shuffle, repeat and autoplay.
  • Browse and control your library through Android Auto.
  • Playback speed, sleep timer, loudness processing and audio-quality options.
  • Listen Together creates an online room with a code, co-hosts, collaborative playback, shared queue and chat; playback stays in sync across devices.

Audio engine

  • Native audio processing built around C++ and Oboe.
  • Parametric equaliser, graphic EQ, presets and AutoEQ headphone profiles.
  • Automix with crossfade planning, BPM/phase analysis and WSOLA time stretching.
  • USB exclusive output and direct-output paths on supported devices and audio hardware.

Output modes, supported codecs and bit-perfect behaviour depend on the Android device, DAC and audio route. The app cannot override hardware or operating-system limitations.

Lyrics

  • Line-synced and word/syllable-synced karaoke lyrics.
  • Multiple lyric sources with provider selection and fallback handling.
  • Translation, romanisation, text-size controls and timing offset.
  • Shareable lyric cards.

Library and discovery

  • Home feed, search suggestions, Explore, new releases, genres and listening statistics.
  • Liked songs, playlists, listening history, downloads and local music.
  • Genre discovery and Smart Mix recommendations.
  • Optional AI music picks using an OpenAI-compatible endpoint that you configure.
  • Podcast and video-podcast support.

Downloads

  • A visible download queue with progress, cancel and retry.
  • Wi-Fi-only downloads that pause on mobile data and resume when Wi-Fi returns.
  • Saved artwork, lyrics and audio metadata where the source and format support them.
  • Downloads are organised under Music/KatMusic.

Integrations

  • Spotify Canvas artwork.
  • Last.fm scrobbling and listening activity.
  • Discord Rich Presence.
  • YouTube Music account support for personalised features and library access.

Personalisation

  • Material 3 interface with light, dark and pure-black themes.
  • Wallpaper- and artwork-derived colour palettes.
  • Floating navigation dock, expressive transitions and a home-screen widget.
  • Player layout selection, lyric appearance controls and additional playback settings.

Player styles

Choose the expanded player layout in Settings → Playback & UI → Player Style.

Style What it does
Classic KatMusic's full player with its tabs, queue and advanced controls.
Poster Large circular artwork with expressive track text and synced lyric context.
Timeline A progress-led layout with a colour split and oversized timestamps.
Lyrics An expressive lyrics-focused view with timed syllable highlighting.
Artwork Large album artwork with focused playback controls.
Canvas An immersive player background using available Canvas artwork.

The Poster, Timeline and expressive Lyrics concepts are adapted from Mochy Music. The original source files and their GPL-3.0 licence are preserved in third_party/Mochy-Music.

Screenshots

Home screen Full player Synced lyrics
Group Blend compatibility Listen Together room Library screen
For You recommendations Settings screen Listening statistics

Desktop

KatMusic Desktop is a Flutter app for Windows, Linux and macOS. It is not a web wrapper: it uses the same YouTube Music and lossless streaming sources, Last.fm taste and scrobbling, synced lyrics, downloads, group Jam rooms and local playback as the Android app, with native desktop window, tray and media controls.

The desktop UI is its own interpretation of KatMusic: midnight-navy surfaces, KatMusic blue, Figtree type, and shader-backed Liquid Glass navigation chrome. It is built with Flutter 3.47+ and the liquid_glass_widgets package; turn the effect off in Settings → Surface & motion if you prefer an opaque shell.

Run it

Install Flutter 3.47 or newer, then:

cd desktop
flutter pub get
dart tool/obfuscate_secrets.dart   # creates the gitignored secrets file
flutter run -d windows              # or: linux, macos

Create desktop/.env from desktop/.env.example before the secrets step if you have an addon key. The app runs without one; keyed addon calls fail closed.

Build installers

cd desktop
flutter build windows --release    # build/windows/x64/runner/Release
flutter build linux --release      # build/linux/x64/release/bundle
flutter build macos --release      # build/macos/Build/Products/Release

Linux deb/rpm packaging uses desktop/linux/packaging/nfpm.yaml; Windows installer source is desktop/windows/installer.iss. Tagged v* builds and manual runs are produced by .github/workflows/desktop.yml.

See desktop/README.md for platform dependencies, architecture and troubleshooting.

Download and install

Latest stable release: KatMusic 2.6.0

Choose the package that matches your device:

Package Android version Recommended for
Universal APK Android 10+ Most devices. Recommended for normal installation.
ARM64 APK Android 10+ 64-bit ARM phones and tablets.
Legacy APK Android 7–9 Older supported devices. Some visual effects and media controls use legacy alternatives.
Uncompressed universal APK Android 10+ Larger, uncompressed package for troubleshooting and testing.
  1. Download the APK that matches your device.
  2. Open the downloaded file and approve installation when Android asks.
  3. Launch KatMusic and configure account access or optional integrations from Settings.

You can also download the SHA-256 checksums to verify a package, or browse all releases.

Build from source

Requirements

  • JDK 17
  • Android SDK with platform 37
  • Android NDK
  • CMake 3.22.1 (used by the native audio engine)

Clone and build

git clone https://github.com/Arct-Development/KatMusic.git
cd KatMusic

# Build a debug APK
./gradlew :app:assembleDebug

# Run local unit tests
./gradlew :app:testDebugUnitTest

# Build a signed release APK
./gradlew :app:assembleRelease

The debug APK is generated at:

app/build/outputs/apk/debug/app-debug.apk

Release signing

Release builds require your own signing key. KatMusic deliberately refuses to create a release APK with a temporary debug key, because an incorrectly signed update would not install over the existing app.

For a local build, copy .env.example to .env and set the signing values:

RELEASE_STORE_FILE=path/to/release.keystore
RELEASE_STORE_PASSWORD=your_keystore_password
RELEASE_KEY_ALIAS=your_key_alias
RELEASE_KEY_PASSWORD=your_key_password

A base64-encoded keystore can also be supplied with SIGNING_KEY and the matching password/alias environment variables. Keep .env, keystore files, passwords and API keys private. Never commit signing credentials or personal tokens.

For the CI build and contribution workflow, see CONTRIBUTING.md.

Project structure

Path Purpose
app/src/main/java/.../data/ Catalogue, accounts, lyrics, downloads, library and settings data.
app/src/main/java/.../playback/ Player state, playback coordination and audio features.
app/src/main/java/.../ui/ Compose screens, components, player and theming.
app/src/main/cpp/ Native audio engine and DSP implementation.
audio/ Native audio support modules.
website/ KatMusic project website.
third_party/ Third-party source and licence notices.
tools/ Build and development utilities.

Main technologies

  • Kotlin and Jetpack Compose for the Android application.
  • Material 3 for the interface and theming.
  • Media3 / ExoPlayer for media playback and media-session integration.
  • Hilt, StateFlow, DataStore and Room for app state and persistence.
  • C++ and Oboe for native audio processing and output.

Privacy and security

  • KatMusic does not bundle an analytics or advertising-tracking SDK.
  • Network requests go to the catalogue, lyric and integration services needed for the features you use.
  • Account sessions and locally configured credentials are stored on-device; do not include them in bug reports or commits.
  • Optional integrations such as Last.fm, Discord and AI recommendations are controlled by your settings. AI requests are sent to the endpoint you configure.

For security issues, please follow SECURITY.md rather than posting sensitive details in a public issue.

Contributing

Contributions, bug reports and thoughtful feature requests are welcome.

  • Read the contribution guide before opening a pull request.
  • For bugs, include reproduction steps, Android version, device details and relevant logs.
  • For larger features, open an issue first so the approach can be discussed.
  • Keep credentials, tokens, keystores and personal data out of commits.

Please also read the Code of Conduct.

Credits

KatMusic builds on the work of many open-source projects and services:

  • Mochy Music by InlitX — source and design inspiration for the Poster, Timeline and expressive Lyrics player styles. Original files and GPL-3.0 licence: third_party/Mochy-Music.
  • SimpMusic — lyrics-provider and integration reference.
  • RiMusic — InnerTube and YouTube Music integration reference.
  • Monochrome Music — FLAC and lossless-streaming reference.
  • NewPipe Extractor — stream extraction.
  • Coil — image loading.
  • Oboe — low-latency native audio.
  • AndroidX, Jetpack Compose, Material 3 and Media3 — application UI and media foundations.

Lyrics may be supplied by LRCLIB, Apple Music, YouTube Music and other providers available in the app. Service names and trademarks belong to their respective owners.

License

KatMusic is licensed under the GNU General Public License v3.0. See LICENSE.

Third-party code remains subject to its own notices and licence terms. In particular, Mochy Music's preserved source is covered by the GPL-3.0 licence included at third_party/Mochy-Music/LICENSE.

Disclaimer

KatMusic is an independent, third-party project. It is not affiliated with, endorsed by or officially connected to Google or YouTube. YouTube and YouTube Music are trademarks of Google LLC.


About

A native Android client for YouTube Music. Ad-free streaming, offline downloads, word-by-word lyrics, a parametric equaliser and an automix engine that blends one track into the next.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages