# SonicWave Music Player
**Offline-first audiophile music player** built with Kotlin, Jetpack Compose, Media3 ExoPlayer, Hilt, Room & DataStore.
---
## Playback
- Background playback with Media3 ExoPlayer
- Gapless playback & crossfade (0–12s)
- Variable speed (0.5x–2.0x)
- Sleep timer with smooth volume fade-out
- Shuffle (queue syncs to shuffled order) & Repeat (Off/All/One)
- Auto-resume last song, position, speed & mode on launch
- Play count tracking, error recovery (auto-skip)
## Audio Quality
- **Bit-Perfect Mode** — disables all DSP, raw PCM to DAC
- **Hi-Res detection** — per-song analysis with badges: Bit-Perfect, Hi-Res, Lossless, Downsampled, BT Re-encoded
- **Output detection** — wired, USB DAC (product name), Bluetooth (codec), speaker
- Output modes: Auto, Bit-Perfect, High Quality, Battery Saver
## Equalizer & DSP
- 5-band graphic EQ with 9 presets + custom levels
- Bass Boost, Loudness Enhancer, Virtualizer
- **Headphone Correction PEQ** — 32 headphone profiles (Sennheiser, Sony, Apple, HiFiMAN, etc.) + 8 sound signatures (Harman, V-Shape, Warm, etc.) — stackable
- **Sonic Atmos** — spatial enhancement (Subtle/Immersive/Cinematic)
## Library
- Browse by Songs, Albums, Artists, Genres, Folders
- Home: Recently Played, Suggested, Most Played, Favorites, Recently Added
- Instant search across title, artist, album
- 15+ formats: FLAC, WAV, ALAC, MP3, AAC, OGG, Opus, AIFF, APE, WV & more
## Playlists
- Favourites (built-in)
- **Auto-generated Decade playlists** (70's, 80's, 90's, 2000's…) — color-coded chips, auto-populated from year metadata during scan
- Custom playlists — create, rename, delete, reorder
## Player UI
- Full-screen player with large album art, seek bar, haptic feedback
- Tappable artist/album navigation, quality & Sonic Atmos badges
- Mini player with progress bar, play/pause, next
- Queue bottom sheet — shuffle-aware order, track info dialog, remove/navigate
## Lyrics
- Synced `.lrc` file support with auto-scroll & active line highlighting
- Plain-text fallback
## WiFi Streaming
- **Live Radio** (port 8080) — web page with visualizer, album art & audio stream
- **Library Server** (port 8081) — full web app to browse & play entire library remotely
## Settings & Extras
- Themes: System, Light, Dark, AMOLED Dark
- Background media scan (WorkManager, every 6h)
- Media button support (headphones, BT remotes)
- Song info screen with full metadata & stats
- Context menus everywhere: Play Next, Add to Queue, Start Radio, Go to Album/Artist