A lightweight, minimalist music player for Windows. Replicating the aesthetic of GNOME's Amberol, built natively on WPF, C#, and NAudio.
- Minimalist & Adaptive UI: Clean flat design with solid charcoal backdrops, smooth slide-out panel animations, and dynamic album-art colors.
- Word-by-Word Synced Lyrics: Full parsing of standard and enhanced
.lrcfiles with fluid, real-time karaoke-style word highlighting and Apple Music-style active word glow effects. - Drag and Drop Support: Load and play tracks instantly by dragging and dropping individual audio files or entire directories directly into the player.
- Advanced Audio Engine: Powered by NAudio with a 10-band Equalizer, gapless playback, repeat/shuffle logic, and custom equalizer presets.
- Opus & Ogg Playback: Native stream decoding for Opus files (.opus, .ogg) using the Concentus library.
- Playlist Management: Complete support for creating custom playlists, organizing tracks, deleting playlists, and a context menu for adding songs.
- Optimized Memory Footprint: Built natively with WPF to keep resource utilization down.
- Built-in Cache Utility: Instantly clear cached tracks, scanned folders, and image thumbnail cache with one click.
- MP3 (
.mp3) - WAV (
.wav) - FLAC (
.flac) - Ogg Vorbis (
.ogg) - Opus (
.opus) - AAC (
.aac) - M4A / ALAC (
.m4a) - WMA (
.wma)
- .NET 8 SDK
- Visual Studio 2022 (with .NET desktop development workload)
# Clone and navigate to repository
git clone https://github.com/DChitale/amberol-windows
cd amberol-windows
# Restore packages and build
dotnet build -c Releasebin\Release\net8.0-windows10.0.19041.0\amberol-win.exe- Window Shell: MainWindow.xaml - Minimalist control grid and sliding panels.
- Code-Behind: MainWindow.xaml.cs - Window interactions, rendering ticks, and UI animations.
- Converters & Helpers: Base64 to image mapping, adaptive color extractor.
- Audio Engine: AudioEngine.cs - NAudio output device wrapper, equalizer pipeline, and waveform rendering.
- Local Database: Database.cs - JSON-backed storage for tracks, settings, and playlists.
- Custom Decoders: OpusWaveStream.cs - Decodes Concentus packet streams to PCM WaveFormat for NAudio.
User settings, local playlist definitions, and scanned tracks are stored in local JSON databases located at:
%LocalAppData%\AmberolNet\
├── tracks.json
├── playlists.json
├── settings.json
└── covers\ (cached album cover art images)
MIT License - See LICENSE file for details.