Skip to content

Procedural structure and context in music generation

So I figured out how RAG's work. They're vector databases, basically. A way to plug data into your LLM.

And what I'm going to do with it, is use Claude or ChatGPT to pack one full of music history, instrument information, and sonic statistics, that I can plug into Dolphin or a similar model.

This'll do a few different things like.

1. Songwriting: When you ask the machine for lyrics for a pop song, it'll generate a song correctly based on stored pop song structures. So no more pop songs with outros. But, if you asked it for a rambley folk song, you might get an outro.

2. Orchestration: Same goes for orchestration. If say, I wanted to build out a Bulgarian folk song inspired by chamber music, played on an accordion with jazz stylings.... I can get a precise physical compositional structure that would match that, rather than trying to make everything two verses a bridge a chorus, and optional outro.

3. And, speaking of, genre compositing: All of this is about giving the machine context!!! That's all there is to it. The machine should be powerful enough to make any genre combination, no matter how weird... work. With enough information about timing, and history.

What's interesting here, I think is that the behavior of the machine should be markedly different than Suno or Udio, because I don't need or want to use RYM tagging. Because not one bit is necessary.

We have the opportunity to build a better architecture, and think about these things from the ground up. Synthetic data is a lot more flexible than the old fashioned kind. Why reinvent the wheel when this information is already at our fingertips?

Okay, that's not fair. We're freaking programmers.
We make better wheels because it's fun god damnit. But seriously, my way is better, more stable, with fewer surprises at render time.