NeoMusic

Cyberpunk-inspired Android music player built with custom Canvas-drawn UI

NeoMusic 🎡

NeoMusic Landscape Header

A high-performance, cyberpunk-inspired Android music player built with a 100% custom Canvas-drawn UI. NeoMusic rejects standard UI kits in favor of a hand-crafted, neon-drenched aesthetic powered by Jetpack Compose.


✨ Key Features

  • Hand-Crafted UI: Zero Material3 widgets. Everything from buttons to seek bars is drawn using the Compose Canvas API, featuring chamfered corners, neon glows, and custom gradients.
  • Real-Time Spectrum Analyzer: A 16-band log-spaced FFT visualizer that reacts instantly to your music with smooth spring animations.
  • Retro Hardware Controls: Interactive "Rotary Knobs" and "Retro Seek Bars" that mimic high-end analog audio equipment.
  • Cyberpunk Aesthetics: A "Neo" theme utilizing over 30 custom neon color definitions and the TiltNeon display font.
  • Modern Audio Engine: Powered by Media3 (ExoPlayer) with a custom SpectrumAudioProcessor for precise frequency analysis.
  • Lightweight & Fast: Efficient MediaStore indexing and optimized Canvas rendering ensure a lag-free experience even on older devices.
NeoMusic Portrait View

πŸš€ Overview

NeoMusic is designed for users who want their music player to look as good as it sounds. Built using the latest Android technologies (Media3, Koin, Compose), it features a unique "Canvas-only" architecture where every button, slider, and visualizer is drawn manually for maximum performance and visual consistency.

πŸ›  Tech Stack

CategoryTechnology
LanguageKotlin 2.2.10
UI FrameworkJetpack Compose (Canvas API)
ArchitectureMVVM + Koin DI
Audio EngineMedia3 (ExoPlayer) + MediaSessionService
DIKoin
ProcessingCooley–Tukey Radix-2 FFT
CompatibilityMin SDK 24 / Target SDK 36

πŸ“¦ Project Structure

  • ui/ β€” Custom Canvas components (RotaryKnob, SpectrumAnalyzer) and screens.
  • player/ β€” Media3 implementation and the FFT audio processor.
  • viewmodel/ β€” State management via PlayerViewModel and PlayerUiState.
  • data/ β€” MediaStore repository and permission handling.
  • di/ β€” Koin modules for dependency injection.