NeoMusic π΅
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
SpectrumAudioProcessorfor precise frequency analysis. - Lightweight & Fast: Efficient MediaStore indexing and optimized Canvas rendering ensure a lag-free experience even on older devices.
π 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
| Category | Technology |
|---|---|
| Language | Kotlin 2.2.10 |
| UI Framework | Jetpack Compose (Canvas API) |
| Architecture | MVVM + Koin DI |
| Audio Engine | Media3 (ExoPlayer) + MediaSessionService |
| DI | Koin |
| Processing | CooleyβTukey Radix-2 FFT |
| Compatibility | Min 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 viaPlayerViewModelandPlayerUiState.data/β MediaStore repository and permission handling.di/β Koin modules for dependency injection.