projectM - Cross-platform Music Visualization Library. Open-source and Milkdrop-compatible.
See the code
Experience psychedelic and mesmerizing visuals by transforming music into equations that render into a limitless array of user-contributed visualizations.
projectM is an open-source project that reimplements the esteemed Winamp Milkdrop by Geiss in a more modern, cross-platform reusable library.
Its purpose in life is to read an audio input and to produce mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.
This repository now only contains the projectM shared/static library. All frontends, plug-ins and other tools were outsourced into separate repositories. If you're not a developer and just look for a download to run projectM visuals on your machine or device, please use one of the links listed below. The releases section in this repository only contains source-code and binary releases of the projectM development libraries and headers, which aren't useful for end users.
Important: projectM is currently undergoing heavy development. The available end-user frontends are development previews, which are not feature-complete and may have bugs.
.deb and .tar.gz)Or check your distribution's package manager for a binary release. If it is outdated, please contact the package maintainer, as the projectM development team does not maintain any of the distribution-specific packages.
Note: Both the free and paid apps are not created or supported by the projectM developers! If you have technical troubles or other inquiries, please contact the app author via the means provided in the Play Store. Any bug reports in the projectM issue tracker regarding the apps will be closed immediately.
Note: These apps are not created or supported by the projectM developers, and bug reports in the projectM issue tracker regarding them will be closed. For ProjectM TV, please use the issue tracker of its own repository. For the Play Store app, contact its author via the Play Store.
Source code and other resources, mostly aimed at developers.
The preset files define the visualizations via pixel shaders and Milkdrop-style equations and parameters.
The projectM library does not ship with any presets. The frontends come with varying preset packs which can be found in separate repositories in the projectM repository list:
Included with projectM are the bltc201, Milkdrop 1 and 2, projectM, tryptonaut and yin collections. You can grab these presets here.
You can also download an enormous 130k+ presets from the MegaPack here (4.08GB zipped, incl. textures).
VLC Media Player (AKA VideoLAN Client)
Reminder: These are all third-party integrations of libprojectM and not developed or supported by the projectM development team. Please report bugs in those applications to their respective developers.








See the build guide for instructions on building libprojectM from source, including the full CMake reference, the Emscripten guide for WebAssembly builds, and the developer documentation in the wiki.
At its core projectM is a library, libprojectM. This library is responsible for parsing presets, analyzing audio PCM data with beat detection and FFT, applying the preset to the audio feature data and rendering the resulting output with OpenGL. It can render to a dedicated OpenGL context or a texture.
To get started using projectM in your own projects, please go to the wiki and read the developer documentation available there.
There are some open-source applications that make use of libprojectM which can be found in the projectM organization's repositories and elsewhere.
Report issues on GitHub in the respective repositories:
If unsure, post your issue in the main libprojectM issue tracker. Please always check any existing issues if your problem has already been posted by another user. If so, add your logs and findings to the existing issue instead of opening a new ticket.
If you would like to help improve this project, either with documentation, code, porting, hardware or anything else please let us know! We gladly accept pull requests and issues.
Before starting to write code, please take your time to read the contribution guidelines in our wiki.
Come talk to the dev team on Discord.
If you maintain packages of libprojectM, we are happy to work with you! Please note well:
The core projectM library is released under the GNU Lesser General Public License 2.1 to keep any changes open-sourced, but also enable the use of libprojectM in closed-source applications (as a shared library) as long as the license terms are adhered to. The up- and downstream projects may use different licenses - please check all parts of the software to be compatible with your specific project if you plan an integration.
More information for developers is available from the projectM Wiki.
(top 24 of 38)
1,130 followers · starred Oct 2017
946 followers · starred Feb 2025
1,859 followers · starred Jul 2022
267 followers · starred Nov 2021
projectM - Cross-platform Music Visualization Library. Open-source and Milkdrop-compatible.
See the code
Experience psychedelic and mesmerizing visuals by transforming music into equations that render into a limitless array of user-contributed visualizations.
projectM is an open-source project that reimplements the esteemed Winamp Milkdrop by Geiss in a more modern, cross-platform reusable library.
Its purpose in life is to read an audio input and to produce mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.
This repository now only contains the projectM shared/static library. All frontends, plug-ins and other tools were outsourced into separate repositories. If you're not a developer and just look for a download to run projectM visuals on your machine or device, please use one of the links listed below. The releases section in this repository only contains source-code and binary releases of the projectM development libraries and headers, which aren't useful for end users.
Important: projectM is currently undergoing heavy development. The available end-user frontends are development previews, which are not feature-complete and may have bugs.
.deb and .tar.gz)Or check your distribution's package manager for a binary release. If it is outdated, please contact the package maintainer, as the projectM development team does not maintain any of the distribution-specific packages.
Note: Both the free and paid apps are not created or supported by the projectM developers! If you have technical troubles or other inquiries, please contact the app author via the means provided in the Play Store. Any bug reports in the projectM issue tracker regarding the apps will be closed immediately.
Note: These apps are not created or supported by the projectM developers, and bug reports in the projectM issue tracker regarding them will be closed. For ProjectM TV, please use the issue tracker of its own repository. For the Play Store app, contact its author via the Play Store.
Source code and other resources, mostly aimed at developers.
The preset files define the visualizations via pixel shaders and Milkdrop-style equations and parameters.
The projectM library does not ship with any presets. The frontends come with varying preset packs which can be found in separate repositories in the projectM repository list:
Included with projectM are the bltc201, Milkdrop 1 and 2, projectM, tryptonaut and yin collections. You can grab these presets here.
You can also download an enormous 130k+ presets from the MegaPack here (4.08GB zipped, incl. textures).
VLC Media Player (AKA VideoLAN Client)
Reminder: These are all third-party integrations of libprojectM and not developed or supported by the projectM development team. Please report bugs in those applications to their respective developers.








See the build guide for instructions on building libprojectM from source, including the full CMake reference, the Emscripten guide for WebAssembly builds, and the developer documentation in the wiki.
At its core projectM is a library, libprojectM. This library is responsible for parsing presets, analyzing audio PCM data with beat detection and FFT, applying the preset to the audio feature data and rendering the resulting output with OpenGL. It can render to a dedicated OpenGL context or a texture.
To get started using projectM in your own projects, please go to the wiki and read the developer documentation available there.
There are some open-source applications that make use of libprojectM which can be found in the projectM organization's repositories and elsewhere.
Report issues on GitHub in the respective repositories:
If unsure, post your issue in the main libprojectM issue tracker. Please always check any existing issues if your problem has already been posted by another user. If so, add your logs and findings to the existing issue instead of opening a new ticket.
If you would like to help improve this project, either with documentation, code, porting, hardware or anything else please let us know! We gladly accept pull requests and issues.
Before starting to write code, please take your time to read the contribution guidelines in our wiki.
Come talk to the dev team on Discord.
If you maintain packages of libprojectM, we are happy to work with you! Please note well:
The core projectM library is released under the GNU Lesser General Public License 2.1 to keep any changes open-sourced, but also enable the use of libprojectM in closed-source applications (as a shared library) as long as the license terms are adhered to. The up- and downstream projects may use different licenses - please check all parts of the software to be compatible with your specific project if you plan an integration.
More information for developers is available from the projectM Wiki.
(top 24 of 38)
1,130 followers · starred Oct 2017
946 followers · starred Feb 2025
1,859 followers · starred Jul 2022
267 followers · starred Nov 2021