A simple music player, focused on audio pipeline and lyric experience.
- This project has entered maintenance mode.
- All planned TODO items and future feature development will be carried out in a new project.
- No further functional updates will be made to this repository, but bug fixes will continue to be accepted.
- New project will remove all windows dependencies, and become cross-platform deployable.
- Frontend: WPF / C#
- Backend: Standard C++, C++/CLI wrapper isolated inside
MusicPlayerNative/Managed - Native Libraries: FFmpeg, FAudio, OpenSSL, RapidJSON, cpp-base64, kissfft, uchardet, libiconv, NCNN, doctest(for native unittest)
- Framework: .NET 10.0 (Long Term Support)
- Minimum Supported Windows Version: Windows 10 2004 (build 10.0.19041.0)
- Target Windows Version: Windows Latest (build 10.0.26100.0)
- Configurable audio output sample rate, from 8kHz (telephone quality) to 192kHz (Hi-Res audio) (only in FAudio shared mode)
- Exclusive audio output and bit-perfect decode-play pipeline (only in WASAPI exclusive mode)
- Play/pause/stop
- Seek bar
- Volume control
- Full ML-based Lrc Parser, GPU-accelerated with high accuracy (support translation, JPN romanization detection)
- LRC encoding sniffing based on uchardet & libiconv
- Extended Lyric display (support ESLyric with karaoke effect)
- Portrait mode & Animated switch
- NCM file decrypt & play
- Windows System Media Transport Controls (SMTC) support
- 10-band equalizer support
- FFT Execution and spectrum analyzer support
- Playing times record & display
- Playlist support (.wppl format, in standard JSON)
- Lyric Intermediate JSON format, fully editor-compatible and high accuracy
Still work in progress. 3rd party libraries are managed by vcpkg.
- UI Refractor (UI, from @Baicaiye)
- remove C++/CLI, rewrite
MusicPlayerLibaryto pure C++ implementation - isolate neseccary Windows API Calls, write cross-platform alternatives
- Migrating to Avalonia, extend platform support to Linux / macOS
- PcmProvider / PcmSubmitter / PcmObserver refractor, plugable, preemptive rewrite
- Extract
MusicPlayerLibraryinto an audio middleware - You can submit your ideas in issues, or contact me directly by email.
You can download the latest build from Github CI/CD, but if you want to build by yourself, follow the instruction below.
- Clone the repository
- Install vcpkg and integrate it with Visual Studio 2026
- You need the following workloads:
Desktop development with C++
Desktop development with .NET
- Execute
vcpkg integrate installin the Developer Powershell
- Open the solution file
WpfMusicPlayer.slnxin Visual Studio
- If you are using Qualcomm 8cx series or X Elite Series CPU, Select the
WpfMusicPlayer.ARM64.slnxsolution file
- Build the solution.
- The build system will automatically download and build the required dependencies using vcpkg.
- FFmpeg may fail to build under non‑English locales.
- You can switch your Visual Studio language to en_US and try rebuilding of this solution.
- On Windows 10, FFmpeg build threads may be scheduled only to E‑cores, causing extremely slow builds.
- Execute the following command:
powercfg -attributes SUB_PROCESSOR 7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 93b8b6dc-0698-4d1c-9ee4-0644e900c85d -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR bae08b81-2d5e-4688-ad6a-13243356654b -ATTRIB_HIDE- the enable the following config inside your control panel's Power Options:
Heterogeneous policy in effect->Use heterogeneous policy 0
Heterogeneous thread scheduling policy->Prefer performant processors
Heterogeneous short running thread scheduling policy->Prefer performant processors
- Copy the built DLLs from x64(ARM64)/Debug(Release) to the same folder as the built executable.
- Enjoy!
- Notice: if your audio output sample rate is configured below 44100 Hz, some equalizer band will be disabled, preventing the introduction of high-frequency noise.
- This behavior complies with the Nyquist-Shannon sampling theorem.
- Write a clear issue
- Fork the repository, create your new fix/feature, then PR
- Donate to 爱发电
您可以通过 GitCode 镜像 访问本项目。
- See: WPLRC.scheme.md.
- Or you can use the online version: English, 简体中文
- File path:
WpfMusicPlayer/Assets/ApplicationIcon.ico - See: LICENSE.icon.txt
- File Path:
WpfMusicPlayer/lyric_lang_vocab.bin - File Path:
WpfMusicPlayer/lyric_lang_mlp.ncnn.bin - File Path:
WpfMusicPlayer/lyric_lang_mlp.ncnn.param - File Path:
WpfMusicPlayer/song_structure_mlp.ncnn.bin - File Path:
WpfMusicPlayer/song_structure_mlp.ncnn.param - See: README.modelweights.md
If you require:
- higher recognition accuracy,
- a smaller model, or
- a model trained on your own dataset,
- convert the old dlib
.datmodel weight into ncnn format,
you can retrain the network using the scripts provided in the following repository:
- This software is provided under:
SPDX-License-Identifier: MIT
- This project includes third-party components. Their licenses are listed in LICENSE.thirdparty.txt.
FFmpeg can be built under LGPL or GPL, depending on the configuration.
- If you link FFmpeg in LGPL mode, you may distribute the application under MIT without additional requirements.
- If you link FFmpeg in GPL mode, the entire application becomes GPL‑compatible, and you must distribute the full source code of this project together with the executable.
Make sure you understand the implications before distributing a GPL‑linked build.
Distributing a GPL‑linked build does not change the license of this repository.
The upstream source code remains under the MIT License, and contributors may continue to use, modify, and distribute it under MIT.
Only the specific binary distribution that links against GPL‑configured FFmpeg is subject to GPL requirements.
When distributing builds that statically link FFmpeg under LGPL mode, you must ensure end users can relink the application with a modified version of FFmpeg. This can be achieved by either:
- Providing application object files (excluding FFmpeg) so users can relink, or
- Publishing the full source code of this project under MIT, which allows users to rebuild with their own FFmpeg version.
FFmpeg source code is available at https://ffmpeg.org.
The LGPL license text is included in LICENSE.thirdparty.txt.
- Email: lucas150670@petalmail.com
- Telegram Group: https://t.me/MadokawaiiChat
Thanks to all the contributors of this project:
- Zopiclone, code
- steve84966, code
- 白菜叶, UI/UX and logo art
- 大川爱麒麟, test
- and you, who are willing to try using this application.
From ffmpeg_xaudio2 pure CLI demo, to MFCMusicPlayer, then WpfMusicPlayer.
This is an incredible journey with your support.
Let's meet at the next station, Avalonia, with all platform support, richer user interface, native i18n support, and brand new WPLRC v3 format, which fully preserves the semantic information of the lyric.
Thank you!





