f = ma.
Four masses connected by springs. Click to apply force. The masses oscillate. Their positions ARE the audio samples. No synthesis. Just Newton.
Stiffness controls pitch and resonance. Damping controls sustain. Push past the bifurcation threshold and the system goes chaotic — small parameter changes produce large timbral shifts.
Three excitation modes: pluck, bow (Helmholtz stick-slip), and spectrum. In spectrum mode, draw harmonics and the mass network physically filters them — stiffness and damping become a resonant body.
SharedArrayBuffer holds mass positions. The AudioWorklet writes positions at 44.1kHz. The canvas reads positions at 60fps. Same memory. Two transducers. Sound and sight from the same substrate.
Based on CORDIS-ANIMA (Cadoz, 1979). Mass positions integrate from spring forces via symplectic Euler. Cubic spring nonlinearity produces harmonic enrichment. The bifurcation zone is where linear behavior breaks and timbre becomes chaotic.
Friction curve: f = P * (mu_s * exp(-|dv|/v0) + mu_d) * sign(dv). Static friction coefficient drives stick phase. Dynamic friction drives slip. The transition produces Helmholtz sawtooth motion — the sound of a bowed string.
Red zones on sliders mark where the system transitions from periodic to chaotic. Stiffness 0.88–0.97: zero-crossing intervals diverge, pitch becomes ambiguous. Damping 0.85–0.97: energy accumulates faster than it dissipates. Feedback. The edge between order and chaos is where interesting timbres live.
Press S (or the spectrum button) to enable spectrum mode. Draw 32 harmonic bins — the additive synthesis waveform drives force directly into the mass network at audio rate. The physics acts as a resonant filter: stiffness shapes which harmonics survive, damping controls how long they ring. Your sculpted timbre is physically transformed.