projectM is an open-source, cross-platform reimplementation of Winamp MilkDrop, the music visualizer created by Ryan Geiss. What began as a way to bring MilkDrop-style graphics to more platforms has grown into an ecosystem of visualization libraries, desktop frontends, audio plug-ins, media-player integrations and large community preset collections.

The projectM engine
The central project is libprojectM, a reusable C++ library rather than a complete desktop application. It accepts audio samples (PCM), analyses the signal using FFT and beat detection, interprets MilkDrop-style preset equations and shaders, and renders the resulting animation with OpenGL. It can render into an OpenGL context or a texture so that another application can display the output.
This separation matters: the library does not provide a complete audio player or desktop audio-capture interface. A frontend or host application supplies audio, provides the user interface and graphics context, and makes presets and textures available. The core library is licensed under LGPL-2.1; individual frontends, plug-ins and integrations may use different licenses.
projectM official website Β· Core library on GitHub Β· Official GitHub organization and repositories
Standalone applications and frontends
These projects provide a desktop interface around the visualization engine:
- projectMSDL (SDL/C++) β the official cross-platform standalone frontend. It captures desktop audio and displays projectM visualizations on platforms supported by SDL and libprojectM. The current 2.0 application is a development preview; the project documentation cautions that it is not yet feature-complete and may contain bugs.
- Qt frontend β a Linux desktop application supporting PulseAudio, PipeWire and JACK. It adds a preset playlist editor, saved preset ratings and a graphical settings dialog.
- SDL/Rust frontend β a Rust and SDL3 standalone application under development.
The official project describes the frontends as examples and development previews while the core library is undergoing modernization. Check each repository’s release notes and platform requirements before treating a frontend as a finished end-user product.
Audio plug-ins and player integrations
One of projectM’s strengths is that it can be embedded in other audio software instead of running as a separate visualizer window.
- DISTRHO ProM β an audio plug-in implementation of projectM using the DISTRHO Plugin Framework. It provides CLAP, LV2, VST2 and VST3 formats, allowing a compatible DAW or plug-in host to display MilkDrop-style visualizations. ProM is a separate downstream project, not an official projectM frontend.
- foobar2000: foo_vis_projectM β a Windows visualization component by djdron. Its source is at GitHub. It bundles the Cream of the Crop presets and textures. The component repository lists version 0.0.5, released in August 2022, for 32-bit and 64-bit Windows and foobar2000 1.5 or newer.
- foo_uie_vis_projectM β an older foobar2000 visualization-panel component. This is a separate, historical implementation; do not confuse it with foo_vis_projectM.
- Apple Music plug-in β an official projectM front-end plug-in for Apple Music on macOS. The project documentation currently describes it as a development preview.
- libvisual plug-in β exposes projectM visualizations to applications that support the libvisual plug-in interface.
Media players and processing pipelines
- Kodi visualization.projectm β a Kodi visualization add-on with its own source repository. Build branches need to match the Kodi version being used.
- gst-projectm β a GStreamer plug-in that inserts projectM visualization into an audio/video pipeline. It can be used for offline rendering and audio-to-video conversion as well as pipeline-based playback.
- projectM Music Visualization Service β an example AWS service that uses the GStreamer plug-in to turn audio files into video files.
- pmstream β an unusual Linux implementation that renders projectM frames as ASCII or Sixel graphics in a terminal. It can work with the kew terminal music player.
The projectM developers also document integrations in Kodi, VLC and Silverjuke. These are third-party integrations, not applications maintained or supported by the projectM development team. Report integration problems to the relevant application developers.
Presets and textures
MilkDrop-style presets are the creative heart of projectM. A preset describes a visualization through equations, parameters and shaders. Many presets also depend on image textures. The core library does not include a complete preset collection; presets and textures are distributed separately.
- Cream of the Crop β a curated collection of approximately 9,795 MilkDrop presets assembled by Jason Fletcher. It became the default preset pack for projectM releases beginning in 2022.
- MilkDrop texture pack β the original MilkDrop textures plus additional images used by many presets. The texture pack is recommended alongside preset collections.
- Classic projectM presets β the classic collection distributed with older projectM releases.
- Original MilkDrop presets β the original preset collection distributed with the final official MilkDrop release.
- En D presets β a smaller collection of presets.
Forks, ports and compatible projects
The main projectM repository has hundreds of GitHub forks, but most are ordinary copies or development branches; a fork count should not be mistaken for hundreds of separate visualizers. A few downstream projects add identifiable functionality:
- Project-M by ford442 β a fork of the official C++ projectM library that adds a browser/WebAssembly host and related web functionality. It is an independent extension of the engine, not the official desktop frontend.
- foo_vis_projectM β a downstream foobar2000 implementation using a modified projectM source tree, including support for reading preset resources from ZIP archives.
- projectm-frontend-sdl-py β a Python/SDL2 frontend that wraps projectM and routes captured audio to the engine.
Lactea belongs in the wider MilkDrop-compatible ecosystem, but it is not a projectM fork or a frontend using libprojectM. It is an independent Rust implementation supporting MilkDrop 2/3 and projectM-compatible presets, with its own standalone application, library, Kodi add-on and web demo.
Other distributions
projectM Music Visualizer on Steam provides an end-user distribution of the visualizer. The official project documentation currently identifies the modern desktop version as a development preview. The Android projectM app is maintained by an independent app author; the projectM developers explicitly state that they do not develop or support the Android apps.
Project links
Official website
Official GitHub organization
Core library
Developer wiki
Core library releases
Project status and links checked November 2026. projectM is an evolving ecosystem: the core library, frontends and third-party integrations have separate release schedules, licenses and support arrangements.




