Physical modeling: Karplus-Strong, waveguides, and instrument models
Learning objectives
- learner can synthesize plucked/struck strings with Karplus-Strong and tune them via delay-line length and interpolation
- learner can build waveguide models — delay lines with filters — and simplify multi-section strings, coupled strings, and reflections
- learner can extend physical models to woodwinds (reed nonlinearity, tone holes) and feedback/guitar simulation
Capstone — one whole task that evidences the objectives
Build a Karplus-Strong plucked-string instrument tuned across an octave, then extend it into a waveguide model with a reflection filter and demonstrate one acoustic behavior (coupled strings, feedback drone, or a reed nonlinearity).
Prerequisite modules
This module builds a playable string instrument out of nothing but delay lines and filters — the sound-design move behind every “plucked” patch you hear in ambient, folktronica, and live-coded sets where sample libraries are off-limits and everything must be synthesized on stage. Physical modeling is uniquely suited to live coding: a handful of lines yields an instrument that responds organically to parameter tweaks, and Karplus-Strong is famously cheap enough to run many voices at once on a laptop mid-performance.
The arc starts supported: recreate the classic noise-burst-into-feedback-loop pluck, leaning on the Karplus-Strong recirculating-delay concept and (if you prefer a synth-first route) the Surge XT String-oscillator framing of excitation into a tuned feedback delay. The first friction point is tuning — pitch is the reciprocal of delay time, and fractional delays demand interpolation that quietly darkens the tone. These two skills recur on every note you play, which is why they are drilled inside the whole task rather than in isolation. From there you graduate to the waveguide view: two delay lines carrying opposite-traveling waves, then the linearity argument that collapses a multi-section string into one delay plus one lowpass. The unsupported capstone asks you to pick one acoustic behavior — bridge-coupled strings, a nonlinear-shaper feedback drone, or a blown reed — and make it audible.
The required atoms gate the capstone directly: without the pitch-tuning reciprocal, the octave scale fails; without a reflection filter and the sign-inversion trick, the extension sounds like a comb filter, not a string. Supporting atoms enrich the picture — comb-filter spectra explain why the loop is pitched at all, circular buffers demystify the implementation, and the guitar-feedback-as-drone lineage and modal-drum layering connect this technique to the wider ecology of resonator-based sound design.
Runnable examples
Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.
drone
osc 55 >> audio
punctual-0001 · CC0-1.0
SinOsc s => dac;
chuck-0001 · MIT
feedback-loop
{ CombN.ar(Impulse.ar(2) * 0.3, 0.2, 0.2, 3) }.play
supercollider-0015 · CC0
s("cp").delay(0.5).delaytime(0.166).delayfeedback(0.7)
strudel-0018 · CC0
formant-vowel
note("<c3 e3 g3>").vowel("<a e i o>")
strudel-0036 · CC0
d1 $ note "c e g" # sound "supersquare" # vowel "a e i"
tidal-0035 · CC0
modal-resonator
{ Klank.ar(`[[200, 400, 733], [0.4, 0.3, 0.2], [1, 0.6, 0.4]], Impulse.ar(2) * 0.1) }.play
supercollider-0021 · CC0
physical-modeling
Mandolin m => dac; 0.9 => m.pluck; 220 => m.freq;
chuck-0043 · MIT
Atoms in this module
Required — these gate the capstone
Supporting — enrichment, not gating
Part of curricula
- Synthesist / Sound Designer — deep DSP to a performed live synth rig — Deep DSP — advanced operators, spectral, physical, formant, procedural required
Unlocks — modules that require this one