ProjectM – The most advanced open-source music visualizer
github.com
github.com
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.
There's a discord now too. https://discord.gg/tpEuywB
We welcome PRs and generally respond quickly to them. It's a completely community-driven project and we're always looking for help.
i’ve actually found your GitHub profile when i was searching for a domain name
i tried mish.dev and your GitHub came up, so i checked it out and was really impressed of projectM, so i bookmarked it
eventually i’ve got my own domain (mish.co) and yesterday found the bookmark again and decided to share it here!
the rest is history :)
As a starting point, you could separate the different instruments, which I'm pretty sure is a solved problem by now.
https://ciphrd.com/2019/09/01/audio-analysis-for-advanced-mu...
They've gone and tweaked the basic formula from just FFT to something that actually does "peak detection", which is better explained in that article than I can here as it involves a lot of math. There's some ideas out there to be sure.
YEARS ago (so it looks kind of fuzzy now) I remember this guy hacked together some synths he programmed with visuals generated for them, it's really psychedelic stuff:
I actually talked to the person who made this and they said this took like 9 hours to render. So not exactly real-time stuff back then, might be now.
The coolest stuff these days is in 3D and projection mapped.
https://www.semantic-danielou.com/semantic-danielou-53/hex-h...
https://llllllll.co/t/hybrid-hexagonal-keyboard-for-midi-typ...
http://www.yeco.io/introhexblog.html
https://hackaday.com/2019/07/13/isomorphic-keyboards-with-cv...
https://reverb.com/au/item/18946829-c-thru-music-axis-49-iso...
https://en.wikipedia.org/wiki/Isomorphic_keyboard
https://web.archive.org/web/20120219085411/http://www.thesha...
https://www.dynamictonality.com/hex.htm
I saw some music software once also a few years ago that mentioned this type of input device. Don’t remember if the software in question was a VST or a DAW or what it was so can’t find it at the moment. The software that mentioned it may have been open source but I don’t remember.
For some reason around the early 00s peoples love for visualisations fell out of favour. Meanwhile clubs would still hire dedicated VJs and/or lighting guys so didn’t rely on math-based visualisations. Which meant fewer people contributing to developing cool new math.
Worse still, the few industries left that did care about beat detection were games like Guitar Hero, Beat Sabre and those dance machines in arcades; all of which were easier to have patterns programmed by a human due to the limited selection of songs on offer.
It didn't. Music companies effectively killed it because music visualization is a combination of derivative work and performance. So, copyright, licensing etc.
Can't find the relevant link though.
Someone recently posted a link to Terence Tao on mathematical notation. Much the same problem. Notation is hard. Indeed I reckon notation is one of the most difficult problems we have.
That said, visualising Music is kinda like musicalising Art. Possible but not necessarily useful. Synesthesia is one way to deal with it, but is hugely reliant on very human perception and kinda iffy (not knocking those who can experience synesthetically, more suggesting https://en.wikipedia.org/wiki/What_Is_It_Like_to_Be_a_Bat%3F).
A general theory of correspondence of meaning and notation is still unavailable, notwithstanding a vast amount of research in the field. If you can make any useful contribution at all you are worthy of historical recognition.
I've been thinking about this stuff for decades, and can only recommend Charles Saunders Pierce as a good beginning for the modern mind.
[0] https://github.com/xNul/drop
You might be interested in this btw
https://delu.medium.com/a-perceptually-meaningful-audio-visu...
I know, bar graphs got a little tiresome so people tried writing more interesting stuff but at some point the "visualizer" became so disconnected from the music that even if you paused the audio the fireworks and "flow fazing" just kept right on doing its thing.
What you need to have that level of visual interaction is the original stems (or something which emulates them relatively closely).
Services like https://www.lalal.ai/ are a step in the right direction, and will probably lead to what you--and many of us--crave. But as it is now, they require way too much computing to provide meaningful enough data fast enough to build a real-time visualiser.
But even then there is the whole issue of copyright which would bottleneck development even further...
Always surprises me just how out of touch this company is. Just finished reading that huge Twitter thread. That's just so sad.
Intellectual property shouldn't even exist in the first place, let alone be used to extort $50k from fans who are basically advertising their game for free, making it popular and driving a lot of sales. They're the ones who owe Nintendo nothing, yet they remained loyal despite this mistreatment.
So for all other meanings IP does not exist indeed, and this is a misleading term. But instead on arguing on these details, it seems more productive to point that there is an already existing alternative that is better for everybody.
It's not remotely possible for Steam Deck to have the sort of first-party integration Nintendo accomplishes around co-op games, multiple controllers in multiple configurations, motion controls, pairing, latency, suspend/resume...
Like, have you used a Valve product before? They're beautiful and inspiring but... when they work, it's still not Nintendo quality.
The vast, vast majority of Nintendo customers know nothing of game mods or competitive multiplayer or care about latency or netcode. I doubt the majority even play Smash or any fighting game.
Imagine what could have been if every instrument or voice had its own channel...
given that alas consumers of the world are expected to enjoy bundled finished products, it seems semi unlikely. so perhaps this suggests a great use case for stream seperators like the one posted a couple hours ago Cassiopeia[1].
ultimately i'd love for music to be more like html- an encoring of content that the user's agent then renders as it sees fit. having individual streams, or something even more complex lije an ambisonic recording that encodes position would unlock a lot of experimentation & play. i had not considered though how useful such discreization could aid in visualization, which right if the curf sounds very promising.
[1] https://news.ycombinator.com/item?id=28966795 https://www.lalal.ai/blog/meet-lalal-ai-cassiopeia-a-milesto...
Yeah, that would be so nice. Imagine the cool stuff people would be able to do. Disable voice tracks for instrumental versions. Play video games that perfectly synchronize to the music. Make custom visualizers for each song featuring graphics perfectly synchronized to each instrument... I always try to imagine these visualizations when I listen, even something as simple as lines being drawn in accordance to note pitch would be awesome. Pretty much impossible to do that when every sound is mixed together...
The Two Big Ears "spatial audio" format is just a repackaged WavPack file, after all, and that handles 10 channels of simultaneous audio playback even in streaming environments, and its interface is low-latency enough to perform real-time panning and spatialization processing based on listener position, i.e., for VR environments.
As an equally enthusiastic video hobbyist, I've long-wanted to create my own original visuals to accompany my music. Yet the "visual synthesis" tools I've played with seem to remain split into two extremes - essentially "too algorithmic / Geiss-like" on one end and "too complex and art-talent-thirsty" on the other (for example Blender 3D, AfterEffects). A similar gap existed in music tools 20 years ago but remarkable progress has been made in closing that gap empowering in-betweeners like me to achieve wonderful results with only hobby-level skills, time and budgets. Sadly, that stunning progress in democratizing music synthesis has not been equally mirrored in the visual synthesis domain. The visual side mostly remains polarized into DJ/VJ-centric real-time apps and pro-level video editing and 2D/3D rendering tools.
It's odd because the musical synthesis domain seems to have been unleashed by increasing access to dedicated hardware DSPs in the 90s followed by rapid, iterative 'software-ization' as general-purpose processors became capable of replacing DSPs (MMX etc). GPUs have followed a similar march down the curve of democratization but for some reason broad access hasn't unleashed a similar hobby renaissance on the visual synthesis side like it has for visual capture and editing with mobile/DSLR imaging and desktop video editing.
However, I still remain hopeful that perhaps the visual end of the digital synthesis revolution has only been delayed. I find encouraging signs in the real-time rendering and compositing capabilities of GPUs driven by game engines from the nascent efforts of Machinema a decade ago to, more recently, ILM using Unreal Engine to create remarkable visuals for the Disney/Star Wars series "The Mandalorian" using conceptually approachable live projection mapping techniques. The custom code ILM paid Unreal to add has since been bundled (unsupported) into all versions of the engine including the personal/hobby-use ones and garage experiments can already be found on YouTube.
As for providing more useful audio sources as input to the visual pipeline, there are millions of desktop music hobbyists ranging from Garagebanders on tablets and phones to DAW users on desktop. All of them are already capable of supplying separated, uncompressed multi-track audio stems (pre or post downstream effects like EQ/reverb) along with expressive metadata in the form of MIDI 2 notes and articulations. There are even a variety of standards across Windows, Mac, iOS and Android for real-time, multi-track transfer between applications within a device. For distribution formats, new consumer digital digital audio interfaces from HDMI 2.x on the interconnect side to lossless multi- and N-channel spatial audio standards on the encoding side are democratizing the necessary I/O capabilities.
It is very entertaining and I highly recommend giving it a try. You can download extra presets or use the ones that come with it. It's also worth noting that I had to adjust (increase) the beat sensitivity and fiddle with the audio output settings to get it to work on Linux. It also works better for faster-paced songs IMO.
I've been to a couple music shows where the VJ had a serious setup with what looked like physical mixers with buttons, knobs, and dials, and some quite complex software going. Does anyone know how to learn about the state of the art in VJing?
I am extremely heart broken I never bought one before it was discontinued (the software and hardware is open source tho)
for a simple raspi-based device that lets you play with video feedback and has midi-tuneable features check out video_waaaves and other software by andrei jay. combined with a basic edirol video mixer and a couple sources this could get you pretty far.
for coding visuals, learn glsl on shadertoy, p5.js and threejs from streamers like yuri artyukh, and check out what people are doing with commercial software like touchdesigner or max/msp
and TouchDesigner: https://derivative.ca
I wanted to add https://www.synesthesia.live to that list. It has a ton of audio reactive content and the best audio reactivity in the space.
But the key really is in using other apps + syphon/spout to combine all the textures into unique content. Then manipulating that in something like touch designer.
Full disclosure: I'm one of the creators of synesthesia.live but use multiple apps, Touch Designer everyday.
Also curated and organized about 9800 Milkdrop presets from the community. https://thefulldomeblog.com/2020/02/21/nestdrop-presets-coll...
Especially the one called "Beyond Sound and Visual" by Natan Sinigaglia[2] might interest you.
(Apologies for formatting i am on mobile)
I recently had to set this up on a raspberry pi 4 with manjaro / KDE plasma and it was a bit of a pain to setup (the setup is slightly different depending on your exact audio configuration) but it’s very rewarding once you do.
Feel free to PM as I spent a lot of time debugging the setup and may be able to help!
I suppose this thing would probably be more useful as an ffmpeg filter and/or audiacious plugin.
I just took a look at ffmpeg’s video filter interface and it looks like linking the two could be doable!
This feels like a much more elegant solution for recording frame-perfect captures so thank you!
I’ll definitely be looking more into it.
Really cool stuff.
I saw Jon Hopkins in concern a few years ago and his visualization was killer. Wonder if he used this.
TL;DR: whatchutalkinboutwillis?
Some builds are more stable than others. I think I’ve found the SDL build to be the best. The ALSA one was fine bar a few specific plugins that needed disabling but the SDL build on ArchLinux is rock solid.
I thought these visuals looked familiar. At first I thought it might have been based on a library used by MD, but this is much better news.
What OS are you after? It officially supports Windows, macOS and Linux. But I do know of FreeBSD, iOS and Android ports too. There’s bound to be more ports out there as well.
For best results grab the latest master and build with cmake.