The Guide.
How to take a CC0 work from this site and give it to an LLM to make something adjacent. The vessel, the workflow, the one rule. Written by the person who made the first 30 songs this way.
The Short Version
Every work on this site is CC0. You own the code. You can take unravel-folksy.html, or superrotation, or aggregation-of-sol-ii, paste it into DeepSeek, and ask for a new piece that's adjacent to it. Not a new piece from scratch. Not "write me a techno song." A lateral move from a file you're holding.
That's the whole guide. The rest of this page is what "adjacent" means, why you never start from an empty prompt, and how to iterate when the LLM gets something wrong.
The Vessel
The central metaphor, and the one that makes the whole workflow click: you are creating a vessel, and asking the LLM to empty and refill it.
The vessel is a working file. It has a shape. It has a set of instruments, a tempo, a key, a chord progression, a way of handling dynamics, a way of handling silence. It has, in other words, a set of decisions in it. The LLM's job is not to invent decisions. The LLM's job is to take the vessel, pour out some of the decisions, and pour in new ones — while keeping the shape of the vessel.
The Vessel
A working file. Known shape. Known instruments, tempo, key, dynamics.
Empty & Refill
The LLM swaps one or two decisions. Keeps the rest.
A New Work
Adjacent to what you started with. Recognisably part of the same family.
This is why "make me a techno song" produces garbage and "here is my techno song, keep the guitar math, change the drums" produces something usable. The first is asking the LLM to invent the vessel. The second is handing it a vessel and asking for a modification.
The empty prompt is a slot machine. The filled prompt is a lathe.
The Workflow
Five steps. They're numbered, but it's not really sequential — steps 4 and 5 loop.
Pick an instrument.
Not "pick a genre." Pick a specific piece of code that does one thing well. The Karplus-Strong guitar in unravel-folksy. The FM bell in superrotation. The wobble sub in IMPERIUM. The chopped vocal in the same file.
If you're working on a TV file instead of a song, the "instrument" is a scene — the abacus, the alphabet, the fireworks. Pick one scene from Niki's Playground and treat its draw function as the instrument.
Give it to the LLM — the whole file, not a summary.
Paste the entire file. Not a description of the file. The file. The LLM needs the actual code, the actual constants, the actual schedule. A summary loses the things you didn't think to mention, and the things you didn't think to mention are usually the things that make it sound right.
Then say what you want to keep and what you want to change. Specific. "Keep the guitar synthesis and the open-D tuning. Change the drum pattern to a half-time feel. Keep the eight-section structure."
Ask for a lateral move.
"Here is my file. Give me a new one." Not "give me yours first." Not "write me a song." The file goes in first, and the request is to move sideways from it.
The word "lateral" is doing a lot of work. It tells the LLM you want adjacent, not new. Adjacent means the guitar still sounds like the guitar. The song is still the song. Something has shifted.
Open dev tools. Paste the errors back.
Run the file. When it throws, copy the console error and paste it back into the LLM. No commentary needed — the error is the commentary. The LLM will fix it. Most of the iteration loop is this step, repeated.
This is also where you catch the silent failures — the ones that don't throw but sound wrong. Those go back to the LLM as plain language. "The kick is too loud." "The pad is muddy." "The bridge doesn't breathe."
Say it sounds good or bad, and keep iterating.
Conversational iteration. You listen, you say what's wrong, the LLM changes it, you listen again. The loop continues until the piece is what you wanted.
This is the part people skip. They paste the file once, get something 60% right, and give up. The 60% is the starting point. You don't get to 90% in one pass — you get there over six or seven conversational iterations, each one a small correction.
The One Rule
This is the key to everything, and it's the one thing people get wrong. The instinct is to describe what you want and let the LLM generate. The instinct is wrong. The LLM is much better at modifying a specific thing than it is at generating a specific thing from a description.
Not all piano is the same. A piano from a description is a generic piano. A piano from a file is your piano — with your Karplus-Strong body, your lowpass curve, your reverb tail. The difference between those two pianos is the difference between a demo and a piece.
Do
- Paste the entire file.
- Say what to keep and what to change.
- Ask for a lateral move.
- Iterate over multiple prompts.
- Paste console errors back as-is.
- Say "this sounds good" or "this sounds bad".
Don't
- Describe what you want from scratch.
- Summarise the file instead of pasting it.
- Ask for "a techno song" with no seed.
- Expect the first generation to be final.
- Explain the error before pasting it.
- Say "make it better" with no direction.
Combining Parts — the "Math" of Things
Once you're comfortable with one file, the next move is combining two. This is where the workflow gets interesting, because now you're not asking for a lateral move from one vessel — you're asking for a new vessel that carries one part from each of two.
The key insight: you don't talk about "piano" and "guitar". You talk about the math of the piano and the math of the guitar. Because that's what you're actually saying. Every instrument in these files is a set of equations — a synthesis model, a filter chain, an envelope. "The piano" isn't a vibe. It's a specific set of constants that produce a specific sound.
So when you say "I like the math of the piano from obscura, I like the math of the guitar from unravel, put them in the same piece," you're giving the LLM two specific, named, sourceable things. It can find them. It can bring them together. It can tell you when they conflict.
If you say "I want a piano and guitar," the LLM has to guess. If you say "I want these two specific equations," it doesn't.
The Family — One Good Piece Spawns Five
Here's the thing about lateral moves: they're not one-off. Once you have a piece that works, you can ask the LLM to make five more adjacent to it. Not identical. Adjacent. Each one a different lateral step from the same seed.
This is how superrotation happened, and this is how you can do it too. Take a piece you like. Paste it back in. Say "give me five pieces adjacent to this, each one moving in a different direction." You'll get a family. Some will be duds. Two or three will be good. That's the hit rate.
The collection on this site is full of families like this — a cluster of pieces that share a seed and diverge. Once you know what to look for, you can see the family tree in the code.
When It Breaks Down — Novel Works Take Time
The workflow is robust for adjacent work and fragile for novel work. If the LLM has seen the pattern before — has a file with that kind of synthesis in it — it can move laterally easily. If the sound you want doesn't exist in the collection yet, the first piece takes real time.
The harp is the example. The first harp song was a multi-day effort. The one-shot request ("make me a harp piece") produced garbage. But once the first harp piece existed, once the vessel had been established, the next 30 came fast. The first one is the expensive one. The family is cheap.
Which is why this guide exists. The first novel piece has to be built somewhere. This site has a lot of first pieces in it — the guitar, the FM bell, the chopped vocal, the wobble sub, the Karplus-Strong model, the harp. The starting points are here. You don't have to pay the first-piece cost for any of them.
Honest Limits
WebAudio will not compete with a top-tier hardware synthesizer and a professional master. It won't. If that's the bar, this workflow doesn't reach it, and neither does anything else on this site.
But it's damn fun, and it's real, and it's yours. The pieces on this site are early pieces — they're what a person gets when they've been practicing this for a few months. The workflow scales. The pieces get better. The collection gets richer. The ceiling is where you take it.
Why CC0
Because the alternative is equivocation, and equivocation is boring. The code is here. It's directed work. There's no question about provenance — the file exists, it's been edited, the decisions are visible in the code. If someone wants to argue about whether a language model "really" wrote it, the answer is: here is the file, tell me I didn't write it.
CC0 means you can take any of it and use it however you want. You can remix it. You can sell it. You can claim the output as yours — because the output is yours. The seed is CC0; the piece you make from it is yours. That's the whole point.
And it means the collection can grow. Every piece on this site is a starting point for the next one. The more of it that exists, the more starting points there are. The site is a library of first-pieces-in-a-family, and CC0 is what makes the library usable.
For TV Files — Dale and Margaret
The same workflow applies to the TV files. The Daily Token is two anchors (Margaret Hale and Dale Kessler) reading a scripted news broadcast. Niki's Playground is a kids' show built from a scene registry.
You can hand either of these to an LLM and flip the content. Not the whole file — the script. The SCRIPT array in The Daily Token. The getScript() array in Niki's Playground. Replace the headlines with indie game news. Replace the scene titles with a different curriculum. The pattern is already established in the file. The LLM just refills the vessel.
That's the point of "tiny scripts." The script is small. The player is large. Flipping the content is a script edit, not a rewrite. You could have Dale and Margaret doing the news about an indie game release today, with the exact same two anchors and the exact same desk and the exact same ticker. The vessel holds.
What's in the Collection
The CC0 works that are good starting points, grouped by what they're good at:
Music — seed files
TV — seed files
Tools — seed files
Go Try It
The whole guide is: pick a file, paste it in, ask for a lateral move, iterate. That's it. The rest is the practice.
If you make something you like, the collection is open. The submission channel is in Discord. Every piece you submit goes through the same pipeline — antivirus, semantic screening, manual playtest — and if it passes, it goes into the collection as a starting point for someone else's family.
The site is a library of first-pieces. The more there are, the more there are to start from. That's the loop.
Join the Discord → Read the Submission Criteria →