Open-source project
zhongyang219/MusicPlayer2 avatar
zhongyang219/MusicPlayer2

MusicPlayer2 and its two playback cores: a Windows player that keeps its layout in XML

MusicPlayer2 is a feature-rich local music player aimed at the best local playback experience. Supports lyrics display, karaoke-style lyrics, online lyric download and editing, song tag recognition, album art display and online download, spectrum analysis, audio effects, taskbar thumbnail buttons, themes, format conversion, a highly customizable UI layout, and multiple playback engines (BASS and FFmpeg). Supports most common audio formats.

6,771 stars528 forksC++GPL-3.0

At a glance

What is it?
MusicPlayer2 is a GPL-3.0 C++ player for Windows with BASS and FFmpeg cores, lyrics in four places, five switchable layouts and cue sheet splitting. It builds only on Windows, with Visual Studio 2022 and MFC, and ships no binary for any other platform.
Who is it for?
Take it if you play local files on one Windows machine and want lyrics, cover art and a layout you can rearrange. Leave it if you need macOS or Linux, or a mobile build.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 41 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • zhongyang219/MusicPlayer26,771 ★ · +86
Star history
Repository2026-09-232026-11-14
zhongyang219/MusicPlayer26.7k6.8k

86 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Two playback cores, and what a cue sheet changes

MusicPlayer2 ships two playback cores, BASS and FFmpeg. Either core handles most common audio formats, so this is about behaviour on awkward files, not about which extensions open. The feature list also includes cue sheet support, which is the one structurally interesting item here: splitting a single album file by cue means the player tracks positions inside one container instead of a folder of tracks. The readme does not say which core handles which format, nor how a cue split appears in the playlist, so treat both as wiki questions. What is clear is that everything described is local. There is no account and no sync service anywhere in the feature set.

The same lyric text in four places, with an editor attached

Lyrics have the most surface area of any feature here. The same text can appear in the main window, in the Windows 10 search box, on the desktop, and in a karaoke style where the current line is highlighted while it plays. You can download lyrics online, edit them by hand, or let automatic matching pull both lyrics and cover art for a track. Tag reading and tag editing sit in the same list, so metadata and lyrics are handled in the player instead of by retagging files elsewhere. What the repository never states is the lyric file format or the directory those files are written to, and that is the first thing to check before scripting anything around them. The root tree carries a vendored scintilla/ directory beside the player sources and a UnitTest/ directory; neither is explained further.

Five numbered layouts and one Groove variant, described in xml

The screenshot list names five numbered interfaces plus one styled after the Groove music app on Windows 11, and the player switches between them in both light and dark modes. Theme colour is a separate entry, and one listed feature is custom interface layout defined in xml, which is the honest way to read the whole group: the window arrangement is data rather than compiled code. Mini mode is on the same list, giving a small window for when the full player is more than you want. Background Gaussian blur is another entry, so the window can be translucent on its own. The readme does not describe the layout format, so it has to be learned from the wiki before you edit anything.

Three ways in, and a mirror aimed at one network

The releases page is the primary source for binaries. If you manage machines with Scoop, the package sits in the Scoop Extras repository, maintained there rather than by this project's author:

powershell
scoop install extras/musicplayer2

For readers inside China the readme adds a Baidu netdisk mirror, which tells you something about who the project expects to be downloading: the releases page is reachable, just not always quickly.

text
https://github.com/zhongyang219/MusicPlayer2/releases

The readme does not describe an installer or a first-run setup; usage documentation is in the wiki.

A missing MSVC dll at startup means the runtime, not the build

MusicPlayer2 depends on the Microsoft Visual C++ runtime, and the readme leads with that because it is the first thing that breaks. The symptom is an error at startup saying an MSVC dll cannot be found. The fix is not a different copy of the player: install the Visual C++ redistributable package Microsoft publishes, and the readme links the current supported package page. This matters most for anyone who grabbed a build by hand rather than through a package manager, since a runtime is a machine-level install and a player folder on its own is not enough. On a locked work machine, adding a runtime is the sort of install that wants an administrator, so check that before suspecting the download.

Building it means Windows, Visual Studio 2022 and the MFC option

The project is Windows only for both running and developing, and the build recipe is short because there is a single supported path: install Visual Studio 2022 with the C++ workload, tick MFC during installation, then open the solution. The root tree follows that workflow exactly.

text
MusicPlayer2.sln
x64/
Debug/
Release/
UnitTest/
scintilla/
version.info

Debug/ and Release/ are build output, x64/ is the architecture the repository is configured around, and UnitTest/ sits beside the sources without any documented way to run it. Building from master is the only route to unreleased work: the newest published build is V2.78 from 2025-12-27, the two before it are V2.77.1 from 2024-08-23 and V2.77 from 2024-08-12.

Windows shell features are the reason there is no other build

The platform ceiling looks deliberate rather than unfinished. Every documented install route is a Windows route: a downloads page, a PowerShell Scoop command, and a netdisk mirror for users in China. Nothing in the repository points to a macOS or Linux build, and the feature list explains why that is not work waiting to happen, because the distinctive parts are Windows shell integrations. Taskbar thumbnail buttons, lyrics in the taskbar search box and desktop lyrics all belong to the shell around the program rather than to the audio pipeline. The packaging story follows: Scoop is a Windows tool, so the one scripted install path does not travel either. On macOS or Linux the realistic options are a Windows machine, a virtual machine, or a different player.

GPL-3.0, a wiki for instructions, and an untagged gap

MusicPlayer2 is GPL-3.0, which matters in a plain way: anyone modifying it has to pass the source along, so the licence decides who can fork it and who cannot ship a closed variant. This is not legal advice; read the licence text before deciding what your distribution must include. Two practical notes sit beside it. The repository readme is a feature list and a set of pointers, with usage documentation in the GitHub wiki and the change history in Documents/update_log.md, so expect to read outside the source tree to learn how any of it is configured. And the release history has a gap: V2.77.1 in August 2024, V2.78 in December 2025, while the last push to the repository landed on 2026-10-04, after the newest tag.

Editorial conclusion

Take it if you play local files on one Windows machine and want lyrics, cover art and a layout you can rearrange. Leave it if you need macOS or Linux, or a mobile build. Before installing, confirm the Visual C++ runtime is present, and check the wiki for where lyric files are written before you script around that path.

Frequently asked questions

Is MusicPlayer2 available for macOS or Linux?

No. MusicPlayer2 supports only Windows, for running and for development, and every documented install route is a Windows one: the releases page, a Scoop Extras command and a netdisk mirror for users in China. Nothing in the repository points to a macOS or Linux build.

How do I install MusicPlayer2 with Scoop?

The package is in the Scoop Extras repository, so in PowerShell you run scoop install extras/musicplayer2. That repository is maintained by the Scoop project rather than by the author of MusicPlayer2. The player also needs the Microsoft Visual C++ runtime, and the readme links the current supported redistributable from Microsoft.

What does MusicPlayer2 need before it will start on Windows?

The Microsoft Visual C++ runtime. Without it, startup fails with an error saying an MSVC dll cannot be found, and installing the Visual C++ redistributable published by Microsoft is the documented fix. Two playback cores ship with it, BASS and FFmpeg, and the readme does not say which one handles which format.

Which audio formats does MusicPlayer2 play?

The project states the player supports most common audio formats, without publishing an extension list. Cue sheet splitting and format conversion are both in the feature set. The exact format list and the conversion targets are not in the repository readme.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. README
  4. Releases
  5. zhongyang219/MusicPlayer2 on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/zhongyang219-musicplayer2.svg)](https://hysenlabs.com/projects/zhongyang219-musicplayer2)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/zhongyang219-musicplayer2.svg)](https://hysenlabs.com/projects/zhongyang219-musicplayer2)

Was this useful?