A pluck is an excitation entering a tuned feedback loop. The excitation is a raised-cosine pick pulse whose width comes from Hardness, a hard plectrum leaves in a few samples and is broadband, a fingertip stays in contact for a fraction of a period and rolls off early, blended with one-pole-filtered noise for the nail. Velocity shifts the effective hardness rather than only the gain, so a loud note is genuinely brighter. The noise is drawn from a seeded xorshift forked per consumer, never Math.random, which is what makes a note reproducible.
Pluck position is applied to that excitation as a delay-and-subtract: exc[n] − exc[n − d], with d the pluck point's share of one period, rounded to samples. Its magnitude response is 2·|sin(π·k·position)| at harmonic k, so every harmonic with a node at the pluck point is exactly zero rather than merely attenuated. The rounding to whole samples is negligible on a long loop and worth a couple of percent of the length on a short one, so the realised position drifts from the knob at the top of the keyboard, the panel draws the realised one. The maths and the plot both come from ui-kit's pluck-position library, which is pinned against a DFT of that filter rather than against a restatement of its own algebra.
The loop is a fractional delay line, a one-pole low-pass for loss, and a first-order allpass with a negative coefficient for stiffness. Both filters add delay of their own, a one-pole contributes a/(1−a) samples, the allpass (1−c)/(1+c), and a loop that ignored that would play flat by over a dozen samples on a dark, stiff, low patch, which is a quarter tone at 55 Hz. So the delay line is given the period minus what the filters contribute and the remainder rides on the interpolator. At the very top of the range the filters can want more delay than the note has, and stiffness is given up first: being in tune is not negotiable.
Loop gain is solved, not dialled. exp(−6.9078 / (f · T60)) puts the fundamental exactly 60 dB down after the Sustain time, and the renderer then allocates exactly that long plus a 20 ms raised-cosine fade onto true zero. A tail is therefore never truncated mid-ring and a buffer never holds seconds of silence, the note is as long as the physics says and not one sample longer.
Renders are cached per note, per velocity layer, per strike variant, and per timbre-parameter hash. Velocity is quantised into four layers because it changes the excitation's spectrum but not its level, level is a gain at playback, so it stays continuous. Repeated strikes of one key alternate between two seeds, which is the cheap and correct fix for the machine-gun artefact a single buffer would have. Moving any timbre parameter drops the whole cache, because those parameters change the samples themselves. The cache is bounded by total frames rather than by entry count: a Muted patch's buffers are a fifth of a second and a Harp's are five, so an entry cap would mean a different memory ceiling on every patch.
Voices are capped at twelve with oldest-first stealing. Re-plucking a ringing note stops the old one over 60 ms, one string has one vibration, which is the opposite of the Gamelan module where a bar struck twice really is two strikes ringing together. Key-up damps over a time that scales with the patch's own sustain, between 120 and 900 ms, so a Muted patch stops when you let go and a Harp patch is allowed the moment of ring a harpist would get.