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.
- Standalone (latest build) (Requires the latest Visual C++ redistributable to run)
- Steam
- Windows Store
- Standalone
- Steam
- Check your distribution's package manager for a binary release.
- Google Play (Note: This app is not created or supported by the projectM developers!)
- Library source code
- Qt5 based PulseAudio and JACK desktop apps as source code for Linux
- ALSA, XMMS, Winamp, JACK (source, unmaintained)
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 41,000 preset pack of presets here (123MB zipped).
Silent Radiance Distance Disco
See BUILDING.md 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.
- Steal cool stuff from the recently-released Milkdrop source.
- Update the various implementations using libprojectM.
- Update downstream projects with new versions.
Report issues on GitHub in the respective repositories:
- Rendering issues, crashes or the libprojectM core/API
- Standalone SDL app (including the Steam release)
- Windows Store App
- Apple Music plug-in
- Issues regarding the projectM Android apps in the Play Store, please contact the app author via the Play Store. We cannot help with any problems or requests.
If unsure, post your issue in the main libprojectM repository. 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 one.
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.
If you maintain packages of libprojectM, we are happy to work with you! Please note well:
- The main focus of this project is libprojectM. It's a library that only really depends on OpenGL. The other applications are more like examples and demos.
- Many of the frontend applications are likely outdated and of less utility than the core library. If you desire to use them or depend on them, please file an issue in the respective repository so we can help update them.
- The "canonical" application for actually viewing the visualizations is now projectM-SDL, based on libSDL2 because it supports audio input and is completely cross-platform.
- This is an open source project! If you don't like something, feel free to contribute improvements!
- Yes, you are looking at the official version. This is not a fork.
projectM is released under the GNU Lesser General Public License 2.1 to keep any changes to the core library 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.
More information for developers is available from the projectM Wiki.