English | 简体中文
FMusic is a cross-platform music player that follows Fluent UI design principles. The user interface is implemented with Qt QML while core functionality is written in modern C++, enabling support for Windows, macOS, Linux, Android, iOS and web platforms where applicable.
Note: This project is under active development. Many features are work-in-progress. Contributions are welcome — please contact the author if you would like to help. 😉
As digital music becomes ubiquitous, users expect a simple, fast and privacy-respecting player that works seamlessly across devices. Many existing players are platform-limited, ad-heavy, or overly complex. FMusic aims to be lightweight, visually consistent (Fluent UI), open-source, and feature-rich while serving as a personal learning project for the developer.
- C++ Tools: Visual Studio 2022 (with C++ desktop development workload) or MinGW.
- CMake: Version 3.20 or newer.
- Conan: Version 2.0+ (Package Manager).
- Qt: Qt 6.8.1 (Ensure QT_ROOT environment variable is set or CMake can find it).
Before building for the first time, detect your system's compiler profile for Conan:
conan profile detect --forceClone the repository:
git clone https://github.com/zhou2004/Fmusic_player.git
cd Fmusic_player
Build Release Version:
# 1. Configure (This automatically installs dependencies via Conan)
cmake --preset FMusic-release
# 2. Build
cmake --build --preset releaseBuild Debug Version:
# 1. Configure
cmake --preset FMusic-debug
# 2. Build
cmake --build --preset debugNote: The executable will be generated in bin/Release or bin/Debug.
Build via CLion (Recommended)
- Open the Fmusic_player folder in CLion.
- CLion will automatically detect CMakePresets.json.
- Go to Settings -> Build, Execution, Deployment -> CMake and enable the FMusic-release or FMusic-debug profile.
- Wait for the initial configuration to finish (Conan will download dependencies automatically).
- Click the Build (Hammer) icon.
Basic
- 🎧 Local playback: MP3, WAV, FLAC, and other common formats.
▶️ Playback controls: play, pause, seek, previous/next track.- 🔊 Volume control.
- 📝 Lyrics: support for local lyric files and online synchronization.
- 🌓 Theme support: light and dark modes (improvements planned).
- 🗂️ Playlist management: create, edit and remove playlists (enhancements planned).
Extended / Planned
- 🎚️ Built-in equalizer and audio effects.
- 🔁 Audio format conversion tools.
- ☁️ Cloud and online music integration (future work).
- Language: C++ 20 (Qt 6.8.1)
- UI: QML with Fluent UI styling
- Compilers: MinGW64 or MSVC (x64)
- Build system: CMake 3.20+, Ninja recommended
Contributions, bug reports and suggestions are welcome. Please open issues or pull requests on the repository. If you want to join development directly, contact the project author.
This project stands on the shoulders of giants. We utilize the following open-source libraries to deliver the best experience:
- Qt 6.8.1 - Powerful cross-platform application development framework.
- FluentUI for QML - A fluent design system component library for Qt/QML.
- TagLib 2.0 - A library for reading and editing the meta-data of audio formats (ID3, Vorbis, etc.).
- KissFFT 131.1.0 - A Fast Fourier Transform (FFT) library, used for audio spectrum visualization.
- OpenSSL 3.0.15 - Robust, commercial-grade toolkit for the Transport Layer Security (TLS) protocol.
- zlib 1.3.1 - A massively spiffy yet delicately unobtrusive compression library.
Dependency management is handled by Conan.
This project is licensed under the GPL License - see the LICENSE file for details.