"Make the Rhodes hollower, and let the bell bloom slower." That sentence becomes p-fields in a running orchestra — and the orchestra is yours: readable, downloadable, and runnable in vanilla Csound with nothing of ours installed. Conversation is the new front door. The language underneath is unchanged.
Csound's power was never in doubt — its cost of entry was. Sixty-plus years of synthesis knowledge sits behind a syntax most musicians never get past. We didn't set out to replace any of it. We built a way in: describe the sound, read what got written, keep the file.
The goal was never to hide the orchestra. It was to get more people to the point where they want to read one.
Why this page existsNothing here is a metaphor for what happens — this is what happens. The phrase maps to a typed edit, the edit lands on a named p-field, and the p-field is a number in the score line Csound reads. Pick a phrase; the lines it moves light up.
Four compiles of the same eight bars, each moving exactly one FM
p-field off its default. Same notes, same filter, same seed. Each player below
holds the first twelve seconds of a render made by Csound 6.18 from the
.csd
beside it, and the numbers are measured from those renders — spectral centroid
of the opening chord, and how far the brightness falls across it.
Measured on the opening chord — four voices, 1.6 s window: centroid is the spectral centre of mass — the honest proxy for "bright." Decay span is the centroid at the attack minus the centroid late in the chord: a big span means the tone opens bright and closes dark, which is what a bell does. Note the instrument's own low-pass sits at 3 kHz, so this is a warm Rhodes by design — none of these edits are trying to be glassy in the DX sense.
Every compile is a complete, standalone Csound document — orchestra, score,
function tables built with ftgen,
master bus. No THIRI dependency, no runtime, no account. Download one and
run it: the clip above is the first twelve seconds, and the
.csd
writes the file it was cut from — the full eight bars plus their reverb
tail, 35.9 s of stereo WAV.
Every voice parameter below is a real p-field on a real instrument — reachable by sentence, by knob, or by API, and identical in all three paths because they write the same field.
Detuned saw pairs and sub-oscillators into moogladder and
butterlp. cutoff, drive, and
reso respond to "darker," "grittier," "squelchier."
A pair of two-operator foscili units — a 1:1 tine body and a
1:ratio bell partial. The carrier:modulator ratio, the index
depth, and the index decay are all addressable in words.
Singing bowls built from partials at 1×, 2.01×, 2.76×, 5.40× with
independent decays; a gbuzz pad whose harmonic count breathes
under an LFO you can set.
Amplitude-modulated subs with conversational rate_hz and
depth — and a phasor-driven sidechain duck bus,
set per project rather than per note.
An honest boundary: the one-word chips are mix and arrangement moves,
not sound design. "Dreamier" and "punchier" push bus parameters — reverb
feedback and return, delay feedback, duck depth — and layer levels, which
reach the score only as each note's amp
p-field. "Darker" pulls the reverb cutoff and the master lowpass down.
Per-voice timbre — cutoff, drive, resonance, ratio — moves through the
sentences and knobs above. We'd rather tell you where the line is than let
you find it.
A student who cannot yet write an orchestra can describe one, then read what was written for them — with their own words still attached to the lines those words moved. The file that comes out is not a toy export; it is real Csound, emitted the way a machine emits it — the standard table set and the bus plumbing spelled out whether or not a piece leans on them — and it runs anywhere Csound runs.
The agent works from the same material a student would: it can pull any voice's actual orchestra text mid-conversation — the same code you can download here. Chord harmony is walled off from it entirely: the agent names chords by symbol, never sees a voicing, and the THIRI engine resolves each symbol to pitches server-side — chord tones are computed, not guessed. Melodic lines are the exception, and we'd rather name it: solos and licks do let the agent place explicit note numbers, and the compiler honours them verbatim.
Wire THIRI into your assistant and ask it for harmony you can hear the reasoning behind. In Claude Code, one line:
Anywhere else, add the hosted server —
https://mcp.thiri.ai/mcp
— with your key. Nothing to install.
Then: "Reharmonize Dm7 G7 Cmaj7 with Coltrane changes, then give me rootless voicings that voice-lead."
If you teach Csound, write in it, or maintain it — we would rather hear from you early than launch at you late. Tell us where this helps and where it offends.
dennison@bluesprincemedia.com · engine at chords.thiri.ai · MCP at mcp.thiri.ai