Lane F: procedural WebAudio engine + soundboard demo
Event-driven comedy SFX, all synthesized (no assets, no deps):
- engine.ts: lazy AudioContext (dormant until ui:play / first gesture),
master chain at ~-12dBFS through a soft limiter, persisted mute
(blobbo:muted), 10-voice polyphony cap with steal-nearest-to-finish.
- sounds.ts: squish (impact-scaled wet splat), boing (springy sweep),
splat (per-colour pentatonic bloop, PALETTE order), sparkle (bubbly
arpeggio), clank+windup (0.5s accelerating ratchet matching the machine
telegraph), tick (starter blip), fanfare (major arpeggio + new-best
flourish), optional ambient conveyor hum. All ±10% pitch-randomized,
all <400ms except fanfare.
- install.ts: subscribes the frozen wire events, returns { engine },
mounts the bottom-right mute button.
- demos/lane-f.html + src/demo/lane-f.ts: soundboard driving the real
installAudio wiring; impact slider, colour picker, splat-storm stress.
Verified: tsc strict + vite build pass; 36-check headless harness proves
dormancy pre-unlock, single-context creation, every sound synthesizes,
voice cap holds under a 60-splat storm, and mute persists. Caught+fixed a
clank() infinite loop (geometric tick interval converged below windup).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>