Colophon
What this is made of, how it is made, and whose work is in it. A 274-genre deterministic vector space, one score brain, a Faust WASM engine, and a rule about never losing the generator again.
We once rendered ten vaporwave tracks at 4am into a home directory that wasn't under version control. The renders survived; the
.csdthat made them did not — we kept the artifact and lost the generator.
That is the whole origin story, and it produced one rule that every other decision here obeys.
Source is committed; audio is derived and gitignored. The score brain
and the synthesis are the capability. Every .wav, .mp3
and .mp4 is regenerable, so none of them is ever committed. The
founding royal-road.csd that first proved the idea is kept safe on
a branch — the origin lost and refound.
It applies to this page's neighbours too: the release feed you can subscribe to is generated at deploy time from the repository's own history, not hand-written and stored. Nothing on this site is a payload that could go missing from its recipe.
Each genre is a point in one deterministic vector space — tempo, swing, harmony, kit, instrument and effect pools, the lot — and the map you drag is that space, laid out so proximity means similarity. Blends, tracks, playlists and hours-long journeys are all just points and paths through it.
The catalog is a work of mathematical fiction. Every genre wears an
invented display name: the anchor techno appears on the map as
Unblinking Interval, jazz as Smoke Arithmetic,
fugue as The Patient Chase; salondawdle,
Ottoman Heat Death — a brushed 3/4 salon waltz — was born fictional, and
the space carries real odd meters to hold it. The ids underneath stay stable and
load-bearing: they are what paths, presets and the verifier read.
One pipeline, four honest stages. A point on the map becomes a blend of genre weights; the blend resolves to an engine state; one score brain turns that state into a deterministic list of note, drum, found-sound and effect events; and a fleet of Faust WASM voices renders it. Harmony is generated rather than looked up — functional progressions with a per-genre adventure knob, voice-led with minimal motion — and the scheduler is a set of composable, seeded transforms applied at one choke point, so live playback, offline renders and exported MIDI all hear the same music.
The same code runs in both directions: the browser plays a live AudioWorklet graph, and Node "presses" the identical modules offline. Press equals live — what you hear is what renders. Most pitched instruments are real samples, extracted from a General MIDI SoundFont and run through per-voice effect chains; synthesis stays where synthesis is the identity (the acid bassline, the wobble, the vocoder).
Everything is deterministic from a seed. The same seed always plays the same music, which is why every link on this site — including every entry in the release feed — is a reproducible piece of music rather than a recording.
STELLATE was extracted from a catalog of verification methods, and it is a
worked example of that catalog's thesis: generator → verifier → feedback
loop. A generator that nobody checks drifts; a verifier turns taste into a
gate you can run. Its genre-conformance work cites the catalog's verifiers
12.33 (genre conformance) and 17.43 (what to do when no
formal verifier exists).
1 · Determinism. Same seed ⇒ byte-identical events. An absent knob ⇒ byte-identical output, because an unused dimension draws no random numbers at all.
2 · The matrix. Every anchor is rendered, measured on 23 symbolic features, and scored against every genre's target fences. All 274 must score highest as themselves. If a change makes a genre stop sounding most like itself, the change does not land.
Machines verify structure. Human ears verify taste — in the app, by listening.
Nearly all of the raw audio here is other people's work, fetched by committed
recipes into a directory git ignores. None of it is in the repository — but it
does ship. The deploy copies that directory to the server, so anything the
engine can play is fetchable by anyone who knows the URL. Saying otherwise would
be more comfortable and less true. That does not relax a single licence: where
the deploy and the terms disagree, the terms win and the exposure is real and
knowing, and the remedy for an objection is to pull the item and re-point the
genre at a licensed substitute — a one-line change in a recipe. The tiers below
describe what each licence permits, not what this project abstains
from. The full ledger — every item, URL and licence — lives in
SOURCES.md.
Vendored, credited, and carved out of this project's MIT grant where their
licences require it. NOTICE in the repository is the authoritative
version of this list.
@grame/faustwasm — the synthesis compiler and
its WASM runtime (LGPL; the Faust library exception expressly allows compiled
output to be relicensed by its author, so the generated DSP ships MIT).There is a second front door: the accessible text
version, which is screen-reader- and keyboard-first and needs no visuals at
all. Pick a genre or build a journey; the music is byte-identical to what the
star map would play for the same seed and blend, and what's happening arrives as
prose — a live narration log, an on-demand full announcement, and every control
reachable by keyboard. Motion respects prefers-reduced-motion. The
address bar carries the whole session on both pages, so a bookmark or a shared
link reopens exactly this music.
Every deploy regenerates release notes from the repository's history and publishes them here. Each entry links to a mix that shows off what changed: work on the found-sound layer links a bed-heavy genre, harmony work links the jazziest one, drum work links the genre that is mostly drums. The links carry real coordinates from the star map, so they are playable, not illustrative.
Made by Paul Ford, published by Aboard. Source at github.com/aboard-io/stellate, MIT licensed (© 2026 Paul Ford), with the third-party carve-outs above. Contact ford@ftrain.com.
Full attribution ledger: SOURCES.md. Third-party licences:
NOTICE. How a song is made, drawn stage by stage:
how.html. The contract a change has to keep:
CONTRIBUTING.md.
This page has no JavaScript, no cookies, no trackers, and no images. It is text about music, which seemed like the right register.