ProjectM visualizer of input audio

I found this implementation of Ryan Geiss’s Milkdrop in openGL (milkdrop was originally the winamp visualizer - and has evolved to be really spectacular in recent years):

And thought it might be cool to drop it in a juce component and make it dance to the incoming audio.

Took a little work to get the libraries to compile … but linking and using them in a juce project was quick and easy. Was hoping to make plugin, but can’t seem to link libraries to plugin compilations (can you not build a library that links to a library ?) that might make sense?
Hoping to map the presets to popup, and add the fullscreen functionality soon.

Anyway, here are some screenshots of some of this visualizers presets, as well as links to the project, and executable (i386 mac only at the moment).

the executable:
http://flyloops.com/projectM/ProjectM.zip
(make sure you make some noise when running it, since it will only switch presets if you peak above some input level)

the source code:
http://flyloops.com/projectM/ProjectM%20Standalone.zip

To compile the project, you will need to download project M and compile the library for you’re environment. I was only able to get it to compile for Mac i386 so far. Also, the library is easier to compile from the clementine player source:

This source code is no longer available and I would love to see it as I am having some problems with the JUCE OpenGlContext and the OpenGl context needed by libprojecM. Everything is compiling and I a, using and the initial code that is supposed to create the context seems to be creating the context but the projectm_create is failing in this JUCE code segment:

void projectMComponent::newOpenGLContextCreated()
{
// Attach new context to projectM
_projectM = projectm_create();
projectm_get_window_size(_projectM, &_width, &_height);
}

projectm_create() fails in the Texture initialization code when the code to generate the samplers is executed:

Sampler::Sampler(const GLint wrapMode, const GLint filterMode)
: m_wrapMode(wrapMode)
, m_filterMode(filterMode)
{
glGenSamplers(1, &m_samplerId);
glSamplerParameteri(m_samplerId, GL_TEXTURE_MIN_FILTER, filterMode);
glSamplerParameteri(m_samplerId, GL_TEXTURE_MAG_FILTER, filterMode);
glSamplerParameteri(m_samplerId, GL_TEXTURE_WRAP_S, wrapMode);
glSamplerParameteri(m_samplerId, GL_TEXTURE_WRAP_T, wrapMode);
}

The glGenSamplers call fails. This is the 1st OpenGl call, and I can’t trace it so I believe that the OpenGl context is not available

Any assistance would be appreciated.