Skip to content
THIRI logo
build.thiri.ai
Music theory for agents

Manual · Appendix

Glossary

Fifty-four terms a developer meets in this manual, from guide tones to SharedArrayBuffer, each defined in a sentence or two with a musical example where it helps.

Updated Oct 2, 2026

Terms are grouped by where you meet them. Each number names its chapter or page.

Harmony

  • Pitch class. A note name with the octave removed; C4 and C5 are one. THIRI computes from sets of them.
  • Guide tones. The third and seventh, the notes that fix a chord’s quality. In a 2-5-1 in F they fall by half steps, F to E and B flat to A.
  • Voice leading. Moving each voice the shortest distance into the next chord. The voicing call scores it, lower is smoother; chapter 2 cut 754 semitones to 449 across 32 bars.
  • Avoid note. A scale tone that clashes with the chord when held. In the engine, the eleventh over any chord with a major triad on the bottom, so close C major skips F.
  • Roman numeral. A chord named by its degree in the key, upper case major, lower case minor. Dm7b5 in C is iiø7 on the API page.
  • Predominant. The job of a chord that leads to the dominant, as ii does. The function field of analyze uses the word.
  • Borrowed chord. A chord taken from the parallel major or minor. analyze sets borrowed true and adds the word to the function.
  • Modal interchange. Reharmonising with borrowed chords, one of the eight reharmonize techniques: Gm7 C7 Fmaj7 becomes Gm7b5 Cm Fm.
  • Secondary dominant. A dominant resolving somewhere other than the tonic, such as D7 before Gm7 in F.
  • Tritone substitution. Swapping a dominant for the one a tritone away. C7 becomes G flat 7: same guide tones, bass sliding a half step into F.
  • Backdoor dominant. The dominant a whole step below the tonic, B flat 7 resolving into C major. The technique name is backdoor.
  • Coltrane changes. Key centres a major third apart, each reached through its own dominant, the pattern of “Giant Steps”.
  • Chord-scale. The scale that fits a chord in context. analyze names primary and secondary scales; D7 flat 9 in G minor gets half-whole diminished.

Voicings

  • Close position. All voices within an octave. The engine’s true close voicing is the scale down from the lead with avoid notes skipped, a cluster of seconds.
  • Rootless voicing. Leaves the root to the bass, the API default. C13 after Gm7 returns E3 A3 B flat 3 with G and D omitted.
  • Drop-2. A four-note close voicing with the second voice from the top moved down an octave. Cmaj7 under E5 gives E5 B4 G4 C4.
  • Drop-3. The same with the third voice: E5 C5 G4 B3. Both count the original stack.
  • Doubled lead. The melody repeated an octave below as a fifth voice, added after the drop.
  • Lead sheet. Chord symbols on a bar grid, no voicings. conduct returns one as text: | Gm9 | C13 | Fmaj9 | Fmaj9 |.

Notes and time

  • MIDI note number. The Musical Instrument Digital Interface’s integer for a pitch, 0 to 127, C4 at 60. resolve prints them beside names and frequencies.
  • ppq. Pulses per quarter note, the tick grid of a MIDI file. conduct writes 480, so a bar of 4/4 is 1,920 ticks.
  • Swing ratio. How late the off-beat eighth is pushed; in the usual convention 0.5 is even eighths. conduct returns swing 0.55 on a loop it also labels groove straight, so the engine’s own scale is undocumented (unverified).
  • Onset. The instant a sound starts, measured in the audio, not scheduled in the score.
  • Foley sync. How close a placed sound lands to its frame of picture. Chapter 11 measured a worst case of 1.0 ms over 31 sounds.
  • Click flag. A sample-level jump the verify script marks. The carving film raised 41, all the sounds’ own transients; film one raised none.
  • Stem. One instrument or layer rendered alone. Stems showed what the mix hid: strings burying the theremin by 8 dB.

Loudness

  • LUFS. Loudness Units relative to Full Scale, the broadcast loudness measure. The carving film delivered at −16.0 LUFS.
  • True peak. The highest level once the waveform is reconstructed between samples, in dBTP. The same film measured −1.5 dBTP.

DSP on the pedal

  • Formant. A resonance of a voice or instrument body that stays put when the pitch moves. A shifter that keeps formants moves the note and leaves the vowel.
  • PSOLA. Pitch-Synchronous Overlap-Add. Grains two periods wide are cut at pitch marks and relaid at the new period, so timbre stays. 32 ms latency; 0.005 of the block per voice, measured on the board.
  • Phase vocoder. Pitch shifting in the frequency domain. The plugin’s runs a 2048-point fast Fourier transform with a 512-sample hop and cepstral formant correction: 42.7 ms latency and 0.254 of the block per voice, 52 times PSOLA.
  • Audio callback. The function the host calls once per buffer. Miss its deadline and the output drops out.
  • Block. One buffer. On the Elk Stomp, 64 samples at 48 kHz is 1.333 ms; every Elk figure here is a fraction of that block, not a time.
  • Worst block. The costliest single callback in a run. Five PSOLA voices averaged 0.592 of the block and peaked at 0.788, measured on the board.
  • xrun. A buffer underrun or overrun, the audible dropout. Sushi has no xrun counter, so a block at or over 1.0 is the proxy.
  • Elk Stomp. Elk Audio’s pedal development board: an STM32MP157 with two Cortex-A7 cores, Elk Audio OS, Sushi and a 64-sample buffer.
  • Sushi. Elk’s headless plugin host. It loads the VST3, reports timings as block fractions and is driven over gRPC.

Verification

  • Deterministic. Same input, same output, byte for byte, so a response can be a golden file.
  • Golden vectors. Outputs from the canonical JavaScript engine asserted against the C++ port: 16,353 in the published engine README; on the plugin repository the count differs by branch, 23,859 on the scale-close voicing branch and 28,479 on another as of 2026-10-02 (chapter 20).
  • Bit-identity gate. Render a fixed input offline, hash it, compare to a committed baseline. Either it matches or it is a change.
  • Oracle. A reference that does not guess. THIRI is deterministic, so a model’s note scores as chord tone, chord-scale tone or outside with no human judge.
  • Blast radius. The share of compiled stem units whose hash changes after an edit. add_solo touched 12 to 20 percent; a tone verb touched 100, because stems render wet.

Protocol and keys

  • MCP. The Model Context Protocol, the standard for handing a tool to an AI client. THIRI’s server exposes the five calls as five tools, in JSON, JavaScript Object Notation.
  • stdio. Standard input and output. The local server speaks MCP over them, started by npx, so the key stays on your machine.
  • Hosted connector. The remote server at mcp.thiri.ai/mcp for clients that cannot run a process, like Claude on the web. JSON-RPC over HTTP; a GET answers 405.
  • Bearer token. The key, sent as Authorization: Bearer sk_live_… on every request. Shown once, rotated with a 24-hour overlap; a bug report carries only its prefix.
  • Rate limit. Requests per minute per key: 30 free, 300 Builder. Over it is 429 rate_limited.
  • Quota. Calls per calendar month: 1,000 free, 10,000 Theory Pro, 100,000 Developer, 1,000,000 Licence. X-Quota-Limit and X-Quota-Used report it on every response; failed calls do not count.

Csound and the browser

  • Csound. The sound compiler behind Composer C and the Conductor. Version 6.18 renders server-side; a WebAssembly build plays in the browser.
  • Orchestra. The Csound text that defines instruments; the score says when they play. The Conductor’s is the public file thiri-band.orc.
  • ksmps. Samples per control block. Every Csound event lands on a block edge; at 48 kHz with ksmps 16, one frame of 24 fps picture is exactly 125 blocks.
  • WASM. WebAssembly, the browser’s compiled-code target. The Conductor imports @csound/browser and synthesises inside the page.
  • SharedArrayBuffer. Memory that browser threads can share, unlocked only on cross-origin isolated pages. This site sets those headers on the three sequencer pages; the Conductor runs Csound without it.
  • VST3. Steinberg’s plugin format, the one Ableton Live and Sushi load. THIRI’s plugin is built on JUCE and ships as VST3, Standalone and the headless pedal build.

Next

Questions developers ask →

Twenty short questions with honest answers about determinism, scope, keys, limits, browsers, offline use, DAWs, the pedal, logging, support and what is public about what comes next.