• Stars
    star
    3,363
  • Rank 13,311 (Top 0.3 %)
  • Language
    C++
  • License
    GNU Lesser Genera...
  • Created over 11 years ago
  • Updated 28 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

Build Status Discord Shield Chat with us on Discord

Logo

projectM - The most advanced open-source music visualizer

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.

Important: This repository only contains libprojectM for use in application development!

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.

End-User Applications

Important: projectM is currently undergoing heavy development, so the available end-user frontends are either outdated or unavailable. We've released a few development previews, which are not feature-complete and may have bugs. As soon as we've finished the current modernization of libprojectM, we'll release new and tested versions of most of the frontends listed below, while we may remove or replace some of those which are no longer maintained by their original developers.

Windows

macOS

Linux

  • Standalone (currently only available as a development preview for Ubuntu 22.04 and compatible distributions)
  • Steam (Same as standalone development preview)

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.

Android

Note: Both the free and paid apps plus the Android TV app 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.

Xbox / Windows Phone

Other

Source code and other resources, mostly aimed at developers.

Discord chat

Chat with us on Discord!

Demo Video

Presets

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).

Also Featured In

Kodi Kodi (formerly XBMC)

Helix Helix

Silverjuke Silverjuke (FOSS Jukebox)

VLC Media Player 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.


Screenshots

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot


Architecture

Building from source

See BUILDING.md and the developer documentation in the wiki.

Using the library

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.


Todo

  • Improve projectM using the recently-released Milkdrop source (WIP).
  • Update the various implementations using libprojectM.
  • Update downstream projects with new versions.

Help

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.

Get in contact with us

Chat with us on Discord.

Contribute to projectM

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.

Package Maintainers

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.

Authors

Authors

License

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.

Wiki

More information for developers is available from the projectM Wiki.

More Repositories

1

frontend-sdl2

Standalone application based on SDL2 that turns your desktop audio into awesome visuals. Available on most platforms supported by both libprojectM and libSDL2.
C++
59
star
2

presets-cream-of-the-crop

Jason Fletcher's curated preset pack containing only the best of the best of all released Milkdrop presets. This is the default preset pack in most new projectM releases.
55
star
3

presets-milkdrop-texture-pack

This repository contains all textures originally released with Milkdrop, plus a good number of other textures used in a large number of presets.
20
star
4

frontend-sdl-rust

Rust | SDL-based standalone application that turns your desktop audio into awesome visuals.
Rust
13
star
5

presets-projectm-classic

The classic projectM preset collection that was published until version 3.1.12. Contains about 4.200 presets.
13
star
6

presets-milkdrop-original

The original preset pack that was deployed with the last official Milkdrop release, textures excluded.
12
star
7

frontend-qt

โ€ผ๏ธ CURRENTLY BROKEN โ€ผ๏ธ - Will be fixed some time after the libprojectM 4.0 release! Help is highly appreciated. Qt-based standalone frontend to projectM. Currently supports Linux with PulseAudio or JACK audio backends.
C++
12
star
8

frontend-music-plug-in

This is the projectM visualization plug-in for Apple Music on macOS that turns your music into awesome visuals while you listen.
Rich Text Format
9
star
9

examples-android

Sample Android app that integrates projectM and visualizes audio on mobile devices. NOTE: This is NOT the Android app found in the Play Store! Please refer to the README for details.
C++
7
star
10

projectm-eval

The projectM Expression Evaluation Library. A portable drop-in replacement of Milkdrop's "ns-eel2" expression parser for use in Milkdrop, projectM and other applications. MIT licensed.
C
6
star
11

projectm-rs

Rust crate for projectM visualizer
Rust
6
star
12

frontend-uwp

โš ๏ธ Help needed! See README.md for details. +++ This is the official Universal Windows Platform application called "EyeTune", available in the Microsoft Store. It runs on any X86-based UWP-enabled device, e.g. Surface tablets and some Windows Mobile devices.
C++
5
star
13

frontend-libvisual-plug-in

The projectM libvisual plug-in that enables any application using libvisual to display projectM visualizations.
C++
3
star
14

gst-projectm

This is a plugin for GStreamer that allows you to utilize the ProjectM library to create visualizations from audio.
C
3
star
15

projectm-sys

Rust FFI for projectM
Rust
2
star
16

examples-emscripten

Example code to show how to use projectM within WASM-based emscripten applications.
C++
2
star
17

milkdrop2

A read-only, just-for-reference fork of the original Milkdrop source repository located at SourceForge: https://sourceforge.net/p/milkdrop2/
C++
2
star
18

presets-en-d

This is a smaller collection of about 50 Milkdrop presets created or remixed by "En D".
2
star
19

tools-moviegen

Quicktime-based movie generator for Windows and macOS to turn audio files into videos by rendering projectM visuals to the music.
C
1
star
20

museum

Repository with old and stale code that will not see any further development. For historical/reference purposes only.
C++
1
star
21

presets-community

Presets provided by the projectM and Milkdrop community. If you have made some awesome presets you'd like to share, this is where you can share them!
1
star