THIRI × CSOUND

Say it in English.
Get real Csound back.

"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.

WHERE THIS SITS

A new door onto an old, deep house

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.

1957
MUSIC I–V
Mathews at Bell Labs. The unit-generator idea that everything since inherits.
1986
Csound
Vercoe at MIT. The orchestra/score model, in C, free, and still going.
2000
The Csound Book
The community writes its canon — the reason a generation could learn this at all.
Today
Conversational
Plain language compiles to p-fields. The orchestra stays legible, portable, yours.

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 exists
THE MECHANISM

From a sentence to a p-field

Nothing 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.

WHAT YOU SAY

          
THE PROOF

One parameter at a time, rendered and measured

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.

Take the files. You don't need us to play them.

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.

csound fm-b-ratio3.csd
WHAT LANGUAGE REACHES

The synthesis surface you can talk to

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.

SUBTRACTIVE / ANALOG

Filter, drive, resonance

Detuned saw pairs and sub-oscillators into moogladder and butterlp. cutoff, drive, and reso respond to "darker," "grittier," "squelchier."

FM

Ratio, index, bloom

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.

ADDITIVE

Inharmonic partials, harmonic flux

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.

MODULATION

Rate and depth

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.

FOR TEACHING

The conversation doubles as the lesson

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.

Run the loop yourself

Wire THIRI into your assistant and ask it for harmony you can hear the reasoning behind. In Claude Code, one line:

claude mcp add thiri --env THIRI_API_KEY=sk_live_... -- npx -y @bluesprincemedia/thiri-mcp

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."

Built by people who owe this language something

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