Power Your Music Visualizations with ProjectM

Do you crave a stunning visual accompaniment when you listen to your favorite songs? Do you want to turn your computer into an extravaganza of sensory stimuli? If so, the music visualization app projectM is for you.

Although recent releases for iOS and Android have gained a bit of momentum for this mind-blowing music visualization app, not enough people know about it or even realize it’s available on desktop computers as well.

If you were a Winamp user back in the day, you just may remember a little something called MilkDrop. Okay, maybe it’s not just “a little something”; MilkDrop had an enormous following in the early 2000s, including an active community of script authors who designed visualization presets for it. ProjectM is actually a C++ and OpenGL port of the famous MilkDrop visualizer, and it’s even better than its predecessor thanks to much love and work from the open source community.


Since we have to compress our images for the Web, we can’t give you a full-quality picture of what projectM has to offer. Therefore, we suggest you try it yourself on your own desktop!

Gettings ProjectM for the Desktop

While projectM for mobile devices costs $2.99, it’s completely free for the desktop. This article is written from a Linux standpoint, but you can also find a copy of projectM for Mac OS X or Windows here on Sourceforge.

If you wish to install projectM through your Linux package management system, the binary to look for is either projectM-pulseaudio (for which you need the PulseAudio sound server) or projectM-jack (for which you need the JACK Audio Connection Kit). The version you choose should depend on which sound server you prefer to use with your musical applications. Note that PulseAudio is a general-purpose sound server included by default on many systems, while JACK is typically used in music production environments.

Troubleshooting note: On two of my systems, projectM-jack initially refused to launch after I installed it through those systems’ package managers. When run from the command line, the program complained that it was missing the font “Vera.ttf”. If you run into the same error, the fix is simple: Download the projectM source from the Sourceforge link above, go into the “fonts” directory of the project, and copy “Vera.ttf” to your projectM system directory:

sudo cp Vera.ttf /usr/share/projectM/fonts/

Using ProjectM

ProjectM will automatically detect your audio stream when you play music, provided your media player is routed through the appropriate sound server (a la PulseAudio or JACK). At first you’ll see a projectM-branded visualization:


After a few seconds, this will morph into one of the included presets. You can hit “m” to view the preset browser and main menu in a sidebar.


These are some other key commands you can use within projectM:

  • f – toggle full screen viewing
  • n – go to next preset
  • p – go to previous preset
  • r – choose random preset
  • y – toggle shuffle mode
  • l – lock or unlock current preset
  • F1 – show help menu
  • F2 – show song title (this did not work on my system)
  • F3 – show preset name
  • F4 – show rendering settings
  • F5 – show frames per second

ProjectM is not only useful for playing music, but for recording it too. If you happen to have a digital projector on hand, you can pull off some awesome video jockey stunts. This is a recording session in which projectM is taking input from my microphone while JACK Rack provides real-time audio effects:


Managing Presets

ProjectM is fully backwards-compatible with MilkDrop. If the plentiful presets it ships with aren’t enough for you, be sure to check out the WinAmp forums for thousands more. ProjectM accepts the file extensions *.prjm, *.milk, and *.so for presets.

You can rate your presets from the preset browser in projectM and even make playlists from them. The default playlist consists of all the presets that appear in the sidebar. To add other presets to the current playlist, click the leftmost button in the menu:


This will take you to a file browser from which you can navigate to your presets directory (in Linux, it is typically /usr/share/projectM/presets or ~/.projectM/presets). You can edit projectM’s *.ppl playlists by hand too; they are simple XML files containing a list of presets with their full paths. This is a playlist with one item:


You can use the other buttons in the menu to open, save, and clear playlists.

Editing Presets

The most amazing thing about ProjectM is that anyone can create presets for it. To edit an existing preset, right-click on it in the sidebar and click “Edit preset.” A simple text editor will open, and there you can control all of the preset’s parameters:


Note: You must have write permissions for the directory the preset is saved in to apply your changes. If the preset is in /usr/share/projectM/presets, copy it to ~/.projectM/presets first and then open the copy for editing.

The popular starting point for learning to author projectM/MilkDrop presets is the Beginner’s Guide to MilkDrop Preset Writing. It’s from 2002, but the information is still relevant.

Mobile ProjectM

You can help support projectM by purchasing one of the mobile apps. The Android version left me greatly impressed. Not only will it respond to audio playback and microphone input, but you can manipulate the visualizations with multi-touch gestures! ProjectM can even be used as a live wallpaper on your Android. The app comes with 275 presets, and you can optionally download additional packs.


Overall, this is very, very cool stuff. What are your favorite ways to use the musical visualization app projectM? How do you think the mobile experience compares to the desktop experience?

Rebecca "Ruji" Chapnik

Ruji Chapnik is a freelance creator of miscellanea, including but not limited to text and images. She studied art at the University of California, Santa Cruz and writing at Portland State University. She went on to study Linux in her bedroom and also in various other people's bedrooms, crouched anti-ergonomically before abandoned Windows computers. Ruji currently lives in Portland, Oregon. You can find her experiments at rujic.net and her comics at dondepresso.rujic.net.

Subscribe to our newsletter!

Our latest tutorials delivered straight to your inbox