My First Innovative Open Source Project — and One I Intend to Maintain
Splitting a song into its instruments and scattering them around a 7.1 room used to be an afternoon of finicky manual work. But the interesting half of the problem was never the speakers — it's who decides where each instrument goes. I handed that decision to a model, and what came back is the closest thing I've built to an agent that produces music. Then I cleaned it up, gave it a license and a version number, and released it. It's my first real open source project — Natural Perspective Spatial Audio — and the first one I intend to keep building on.
It started as something I wanted for myself
I'd been making 7.1 surround mixes of my music for my own media server. The pipeline leans on some genuinely impressive machine learning before I do anything clever: Demucs separates a track into its individual stems, and a dedicated separation model lifts the crowd out of live recordings. That part already works beautifully. What was left to me was the slow, creative call — where in the room each of those stems should actually sit.
Almost agentic spatial sound
So I stopped making that call myself. A language model looks at the song's metadata, its cover art, and the measured level of each separated stem, and then it designs the scene — where every instrument sits, how the space is shaped, how it all balances. It makes the decision a producer makes when they picture where you're standing in the music.
That's what makes it feel almost agentic. The model isn't filling in a template; it's choosing, per song, with intent. The audio never leaves the machine — only metadata and stem levels inform the design — and a deterministic, safety-clamped renderer turns that design into a lossless 8-channel FLAC. The model produces; the renderer engineers. The creative half can get smarter without ever touching the reliable half.
See it — and hear it
I won't re-explain the tool here — I already built a place to show it off. Over in the Fun section there's an interactive gallery of real mixes, each one a stage map you can open to see exactly where the model placed every instrument, the crowd ringed in behind you.
It gets more interesting as the models do
This is the part I find genuinely exciting. The whole design hinges on two things that are improving fast: the separation models that isolate the stems, and the reasoning model that arranges them. Every time either one gets better, this tool gets better — cleaner stems to place, and a more musical sense of where to place them — without me rewriting a line of the renderer underneath.
And the same pattern reaches well past my media server. A mix that re-stages itself to a song's mood. Scoring that adapts to the shape of a room. Accessibility mixes that pull a single voice forward out of the noise. Audio-native models that hear the track directly and place it without a separation step at all. An agent that produces spatial sound is a small idea today — as new models and new uses come online, it stops being small.
My first one to keep
It's on GitHub and PyPI, Apache-licensed, a couple of releases deep, and I'm not abandoning it at v0.1.2. Bring a song; let the producer place the room around you.