Library / SDK
projectM-visualizer/projectm avatar
projectM-visualizer/projectm

Again and again, projectM points at another repository instead

projectM - Cross-platform Music Visualization Library. Open-source and Milkdrop-compatible.

4,581 stars503 forksC++LGPL-2.1

At a glance

What is it?
projectM reimplements Winamp Milkdrop as a cross platform C++ library, and this repository is only the library. Frontends, plugin builds and every preset pack live in other repositories and download sites.
Who is it for?
projectM is a sound choice for a developer who needs a cross platform audio rendering engine and is willing to follow a pointer into another repository to build it.
Can I use it commercially?
Yes, with conditions. LGPL-2.1 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
Is it still maintained?
Yes. The repository last received commits 13 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

  • projectM-visualizer/projectm4,581 ★ · +101
Star history
Repository2026-09-232026-11-14
projectM-visualizer/projectm4.5k4.6k

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

Editorial analysis

The releases page holds headers, not a player anyone can launch

Three statements set expectations before any code appears. The first, a heading, states that this repository only contains libprojectM for use in application development. The second explains that all frontends, plug-ins and other tools were outsourced into separate repositories. The third records that the releases section carries source code and binary releases of the development libraries and headers, which are not useful for end users. The rest of the README is consistent with that division. The recorded homepage is a Discord invite rather than a documentation site, and the chat links inside the text use a different invite code than the one recorded as the homepage. What is not in doubt is the state of the code: the repository is not archived, the default branch is master, and the last push landed on 2026-11-01.

One Steam entry carrying two different version labels

Download routes are listed separately for Windows and macOS, and the same store link is described differently depending on the operating system you are reading the page under. On Windows the Steam entry is marked as the same as the standalone development preview. On macOS that identical Steam link is marked as the old 3.1.12 release. The Windows Store entry carries the same old 3.1.12 label, the Homebrew formula carries it as well, and the Xbox and Windows Phone row reuses that same store listing. The only route anywhere near the current code is the standalone build, labelled a projectMSDL 2.0 pre-release, and Linux additionally receives that pre-release as a .deb and a .tar.gz. So the newest tagged library release, v4.1.8 published on 2026-10-06, is not what any listed end user channel is documented to deliver. Working out which channel you are actually installing is the first task for anyone picking a frontend.

The Qt frontends declare a 4.x floor the 3.1.12 channels cannot meet

The applications that bind to this library are maintained elsewhere and their version requirements are not uniform. The Qt5 and Qt6 desktop applications for Linux, which sit on PipeWire, PulseAudio and JACK backends, are marked as requiring libprojectM 4.x. The GStreamer plug-in lives in its own repository. The standalone C++ application and the Rust application are two further repositories, and the Rust build is marked as a signed development preview at version v0.1.0. The Music.app plug-in is the odd one out: it sits under a different account entirely and is marked as currently available only as an unsigned development preview at v3.0-pre1. Set that beside the four channels still labelled old 3.1.12 and the arithmetic turns uncomfortable. A 3.1.12 build is below the floor the Qt applications declare, so those pairings are not interchangeable. The consumer side is spread even wider: Kodi, Helix, Silverjuke and VLC Media Player are all listed as featured integrations. Even the ALSA, XMMS, Winamp and JACK 2.x sources, unmaintained since 2012, are still linked as other resources.

The Android entry is a pointer to an app the developers disown

The Android row links a Google Play listing under the package identifier com.psperl.prjM, a name with no visible connection to projectM, and then states that both the free and paid apps plus the Android TV app are not created or supported by the projectM developers. Technical problems are to go to the app author through the Play Store, and any bug report about those apps in the projectM issue tracker will be closed immediately. That is a routing rule with teeth in a repository carrying 43 open issues and 498 forks. Note carefully what the row is not saying: nothing about the library. The badge row at the top of the page links a build_android.yml workflow alongside the Windows, Linux, macOS and Emscripten ones, so the library is built for Android even though the application built on top of it is somebody else's product.

The library ships no presets, then names five collections

The preset paragraph opens with a flat statement that the projectM library does not ship with any presets, and explains that preset files are what define the visualizations through pixel shaders and Milkdrop style equations and parameters. Two paragraphs later the same README section says that included with projectM are the bltc201, Milkdrop 1 and 2, projectM, tryptonaut and yin collections, and hands over a download on a personal mirror. Both statements hold in different senses, and the gap between them is where an integrator gets stuck. Preset packs live in four separate repositories, running from about 50 En D presets to roughly 10,000 in the Cream of the Crop pack compiled by Jason Fletcher, which the project currently treats as its default. Another download offers 130,000 or more presets at 4.08GB zipped, textures included, on a third party drive. A fifth repository holds the base Milkdrop texture pack, marked as recommended for use with any preset pack, which tells you no pack is self contained.

A vcpkg manifest in the tree, distro packages handed to maintainers

The top level of the tree is a C++ library's tree, with CMakeLists.txt at the root, a cmake directory, config.h.cmake.in, a features.cmake switch file, and both vcpkg.json and vcpkg-configuration.json. There are also .clang-format and .clang-tidy files, a tests directory, a scripts directory, a docs directory, a vendor directory, and a .gitmodules file that pulls some dependencies in as submodules without naming them. Licensing is doubled up too, with COPYING and LICENSE.txt sitting side by side under an LGPL-2.1 field. Against all of that the distribution story is deliberately hands off: check your distribution's package manager for a binary release, and if it is outdated contact the package maintainer, because the projectM development team does not maintain any of the distribution-specific packages.

The build section is a pointer that stops inside the Emscripten guide

The README opens with five workflow badges, for Windows, Linux, macOS, Emscripten and Android, linking the CI build for each platform. The release history: v4.1.6 on 2025-11-28, then a stretch of about seven and a half months before v4.1.7 on 2026-07-14, and v4.1.8 on 2026-10-06, with pushes to master continuing afterwards.

Editorial conclusion

projectM is a sound choice for a developer who needs a cross platform audio rendering engine and is willing to follow a pointer into another repository to build it. Before committing, check three things: which frontend will bind to it, since the Qt desktop applications declare a 4.x floor while four listed channels still sit at 3.1.12; where the presets come from, since the library ships none and the five named collections sit on a personal mirror and a third party drive; and which library version you pin, since the newest tagged release is v4.1.8 from 2026-10-06 while commits continue to land on master. Anyone looking for an installable visualizer should stop here and choose a frontend.

Frequently asked questions

What is projectM?

projectM is a C++ library that reimplements the Winamp Milkdrop visualizer by Geiss as a modern cross platform reusable component. It reads an audio input, detects tempo, and renders Milkdrop style equations and pixel shaders through preset files.

How do I install projectM?

Installing this repository gives you a library, not a player. It contains the libprojectM shared and static library sources and headers only, and every frontend and plug-in was outsourced to separate repositories. End users are pointed at standalone pre-releases, Steam, platform stores and distribution packages instead.

how to install projectm on windows

Three routes are listed for Windows: a standalone projectMSDL 2.0 pre-release, a Steam build described as the same development preview, and a Microsoft Store entry still on the old 3.1.12 release. None of the three is documented as delivering the current 4.x library line.

How to use projectM visualizer?

This repository's README is aimed at developers rather than end users. It is the rendering library underneath other applications, and the frontends that own those controls are developed separately, so usage questions and bug reports belong with those authors rather than in the library issue tracker.

Official sources

  1. License: LGPL-2.1
  2. projectM-visualizer/projectm on GitHub
  3. Project website
  4. README
  5. Releases
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/projectm-visualizer-projectm.svg)](https://hysenlabs.com/projects/projectm-visualizer-projectm)

Star history chart for your README

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

Was this useful?