Hand someone a patch cable and a reason to use it, and the block diagram teaches itself. After a summer of workshops I stopped opening with theory. This is what replaced it — and why the manual stayed in the drawer. Skip ahead to the minimal chain if you just want the patch.
Start with the patch, not the theory
The first ten minutes decide the room. Give people a sound they made, and every
diagram after that has something to attach to. A good starting patch has exactly
one variable — usually filter.cutoff — and an obvious knob for it.
You don’t teach signal flow. You set up a room where signal flow is the most interesting thing to notice.
What to demo first
- Play a raw oscillator — let it be ugly.
- Patch it through a filter and sweep the cutoff.
- Low resonance first, then push it.
- Name what changed before naming the module.
- Add an envelope and trigger it by hand.1
By the third step most people have already asked the question the lesson was going to force. That’s the whole trick.
A minimal signal chain
Here is the patch I hand out, written the way the workshop firmware expects it:
// route the LFO into the filter cutoff
const patch = connect(lfo.out, filter.cutoff);
if (patch.depth > 0.5) patch.scale(0.5);
console.log("signal flowing");
The scale() guard keeps a nervous first-timer from slamming the cutoff to a
squeal. Small mercy, big difference.
The three modules, at a glance
| Module | Role | First knob |
|---|---|---|
| Oscillator | Raw tone | Pitch |
| Filter | Shape | Cutoff |
| Envelope | Motion | Decay |
Further reading
Errata
An earlier version swapped decay for release. Fixed 2026-07-30.
Footnotes
-
Triggering by hand — not a sequencer — keeps attention on cause and effect. ↩