IMO making a projectM-gstreamer plugin would accomplish this a lot easier and better. I wanted to do this but wasn't sure how to create the GL context.
Started it a while back: https://github.com/projectM-visualizer/projectm/pull/207
Almost all of the visualizations are responsive to the bass/mid/treb amplitudes and detected beat, but the problem on the SDL version on macOS is latency, which is unfortunately present in the demo video you are likely referring to.
SDL doesn't currently allow for requesting low-latency audio capture so we're looking at PortAudio instead.
There have been a good number of major improvements in projectM in the last few years, which is impressive considering the age of this project. Trying to keep software and user-contributed presets and shaders from 20 years ago working are efforts that are never finished.
To mention a few:
* Milkdrop was a windows-only win32 affair, and the shaders for presets have all been written using HLSL, for DirectX. ProjectM had to incorporate a shader transpiler to convert preset shader code on the fly from HLSL to GLSL so that projectM can run on platforms other than windows. The conversion isn't perfect and can cause a few shaders to fail compilation but these problems do get fixed when someone takes the time to dig into them.
* Improving the FFT maths and PCM data interface
* Optimizations for preset evaluation using the LLVM JIT
* Halfway-completed port to the web with Emscripten
* Updated support to work first with more recent versions of iTunes as a plugin and more recently as a Music.app plugin. macOS installer for the plugin and SDL app. Almost-working multi-bundle installer code signing and notarization.
* Text menus and preset searching in the SDL app (keys listed in README)
* Released as a standalone app for Steam
* The build system was ported from a very-broken CMake setup to autotools, and then back to CMake again, soon to be released as a new major version 4.0.0.
libprojectM is a cross-platform library designed to be part of other applications. There are some reference implementations using SDL and Qt. They run on Linux.
For best results grab the latest master and build with cmake.