2026
The original Magnetosphere audio visualizer was coded almost two decades ago. It has been the default visualizer in iTunes / Apple Music for about 17 years. And I am sad to say, it is no longer as vibrant and responsive as it once was. My guess is the port from iTunes to Apple Music broke some of the beat detection logic. It doesn't respond the way it used to.
This inspired me to revisit the project to see how it could evolve. And I have to say, the gains are massive.
Magnetosphere 2.0, running at 60fps with two million particles. Audio by RAYE, "WHERE IS MY HUSBAND!".
The original version, first coded in Processing and eventually ported to the Cinder C++ framework, could handle about 1,500 particles at interactive framerates. Anything more meant overnight renders. It absolutely had to run at 60fps, so my desire to see 10,000 or 100,000 particles had to be quashed. To compensate for the lack of visual interest, I added particle ribbons which were a low-cost way to imply motion trails. The larger elements, the "spheres" which reacted more obviously to the beat, were simple billboarded 2D sprites.
The initial flocking simulation running in TouchDesigner. This was ~250,000 particles.
When I decided to rework it, I tried a few new things. Firstly, I decided to use TouchDesigner for initial prototyping. I knew 95% of this rework would live inside GLSL shaders and TouchDesigner makes playing with GLSL very easy. I started by trying to remember the logic I used for the original version, but quickly decided I shouldn't just port the original. I should reimagine it.
I had already done some GLSL flocking experiments in TouchDesigner so I made that my base. Whereas the original visualizer used magnetic forces driven by the audio to generate the movement, the rework would add a layer of flocking logic. Once I had the flocking particles behaving, I started to crank up the settings. Much to my amazement, I was able to easily get away with 2,000,000 flocking particles and stay at a smooth 60fps. Two million particles behaving collectively looks a lot like a zero-gravity fluid simulation. What an amazing base for an audio visualizer!
Magnetosphere 2.0, running at 60fps with two million particles. Audio by Doechii (feat. SZA), "girl, get up."
The rest fell into place rather easily. I created a set of primary orbs, defined in GLSL so I could have lens warping, radiant bursts on detected beats, and not need to rely on depth-sorting billboarded 2D sprites. These primary orbs would react more intensely to the beat detection, and could push the flocking particles around with a combination of repulsive, attractive, and rotational forces. Each orb has a spin on an arbitrary axis, and the particles orbit around them as they continue to flock collectively. Magnetosphere 2.0 was born.
Magnetosphere 2.0, running at 60fps with 2 million particles. TouchDesigner network view. No audio.
I would love to release this as a stand-alone app that can be run at parties or events. Honestly, I don't know how challenging that might be. I have plans to port all of this to Cinder C++ so that it'll be easier to release an .exe for people to play with but I am still just in the early stages of thinking about how this might work. It is just so mesmerizing that I hope I can get it in front of people. And Apple, if you are reading this, it is time to update Magnetosphere. It has fallen behind.