Effects: candidate layer engines and strip inserts #105

Open
opened 2026-09-29 22:55:29 +00:00 by bcox · 1 comment
Owner

Candidate effect types, split by the rule settled in the console strip inserts design (docs/superpowers/specs/2026-09-25-console-strip-inserts-design.md, "Where effects live"): an effect is a layer engine if it needs any one of bulk storage, a modulator inside it, or per-note sense; otherwise it is a strip insert.

Layer engines

Effect Why it is a layer
Delay (stereo / ping-pong, tempo-synced) Storage; delays of seconds need the shared storage region
Chorus / ensemble (Juno dual-BBD, string-machine three-phase) Modulator (LFO); short lines fit in the slot
Flanger (through-zero optional) Modulator
Phaser (4/6/8/12-stage allpass, feedback) Modulator; unswept it is only a fixed allpass
Reverb (FDN 8x8 Hadamard, or Dattorro plate) Storage
Tape echo / wow and flutter Storage and modulator; delay plus saturating feedback plus head-bump EQ
Ring modulator / frequency shifter (Bode, Hilbert allpass pair) Modulator: the carrier is an oscillator
Vocoder (16–32 band) Two inputs: carrier and modulator, the latter from the sidechain
Resonator / comb bank Per-note sense: tuned from the keyboard
Pitch shifter (granular or delay-based) Storage and grain scheduler

Strip inserts

Effect Notes
Distortion / waveshaper (tube, tape, diode; tilt pre/post) Needs oversampling, admitted as a fixed cost
Wavefolder (259/Serge-style, on a bus) Moving fold depth is an automation lane's job; free-running modulation would make it a layer
Bit crusher / sample-rate reducer Explicit requantize plus sample-and-hold
Gate / transient shaper Reuses the compressor's envelope follower; the gate can key from the sidechain
Stereo imager (M/S) Add, subtract, scale. A mono-to-stereo widener needs decorrelation (a Hilbert pair or allpasses) and is a separate question

Addendum, 2026-10-05: tuned feedback, and what already is one

The Sequential Pro 2 and Pro 3 carry "tuned feedback": a delay line inside the voice whose length tracks the key (the Pro 2's manual gives its tuning in semitones, C0 to C4), with a signed feedback amount and, on the Pro 3, a "grunge" switch and a Karplus-Strong recipe in the guide. From bcox's moregaps.md research of that day; the manuals were read as PDF text by a research agent and not re-checked here.

The "Resonator / comb bank" row above is the nearest entry and is not the same thing: that is a bank on a bus, per-note in sense; this is one keyed line in the voice's own feedback path, ahead of the filter, so the filter sits inside the loop.

What the tree has, read at f6aa8eba, nothing tried:

  • The waveguide layer's Drive::kInput takes a tap of the voice's bus straight into its line (dsp/waveguide_layer.h:141, :198, :996-1000). So a VA layer followed by a waveguide layer reading its tap is already a keyed comb after the filter, per voice.
  • The loop through the filter, the Pro's topology, would be the VA layer reading the waveguide's tap back: a self-tap, which is #100's subject, one sample late per hop, which the tuning would have to absorb.
  • The delay layer's kTime is an offset in frames from a zero base (dsp/delay_layer.h:203-212), so a key-tracked time there is kExpScale on the note in add mode: exponential in key, but a linearly interpolated line in frames, not a tuned one.

If "tuned feedback" is wanted as a named thing rather than a patch idiom, it is a waveguide inside the VA layer's loop and belongs beside #100 rather than as a new effect here.

Candidate effect types, split by the rule settled in the console strip inserts design (`docs/superpowers/specs/2026-09-25-console-strip-inserts-design.md`, "Where effects live"): an effect is a **layer engine** if it needs any one of bulk storage, a modulator inside it, or per-note sense; otherwise it is a **strip insert**. ## Layer engines | Effect | Why it is a layer | |---|---| | Delay (stereo / ping-pong, tempo-synced) | Storage; delays of seconds need the shared storage region | | Chorus / ensemble (Juno dual-BBD, string-machine three-phase) | Modulator (LFO); short lines fit in the slot | | Flanger (through-zero optional) | Modulator | | Phaser (4/6/8/12-stage allpass, feedback) | Modulator; unswept it is only a fixed allpass | | Reverb (FDN 8x8 Hadamard, or Dattorro plate) | Storage | | Tape echo / wow and flutter | Storage and modulator; delay plus saturating feedback plus head-bump EQ | | Ring modulator / frequency shifter (Bode, Hilbert allpass pair) | Modulator: the carrier is an oscillator | | Vocoder (16–32 band) | Two inputs: carrier and modulator, the latter from the sidechain | | Resonator / comb bank | Per-note sense: tuned from the keyboard | | Pitch shifter (granular or delay-based) | Storage and grain scheduler | ## Strip inserts | Effect | Notes | |---|---| | Distortion / waveshaper (tube, tape, diode; tilt pre/post) | Needs oversampling, admitted as a fixed cost | | Wavefolder (259/Serge-style, on a bus) | Moving fold depth is an automation lane's job; free-running modulation would make it a layer | | Bit crusher / sample-rate reducer | Explicit requantize plus sample-and-hold | | Gate / transient shaper | Reuses the compressor's envelope follower; the gate can key from the sidechain | | Stereo imager (M/S) | Add, subtract, scale. A mono-to-stereo widener needs decorrelation (a Hilbert pair or allpasses) and is a separate question | ## Addendum, 2026-10-05: tuned feedback, and what already is one The Sequential Pro 2 and Pro 3 carry "tuned feedback": a delay line inside the voice whose length tracks the key (the Pro 2's manual gives its tuning in semitones, C0 to C4), with a signed feedback amount and, on the Pro 3, a "grunge" switch and a Karplus-Strong recipe in the guide. From bcox's `moregaps.md` research of that day; the manuals were read as PDF text by a research agent and not re-checked here. The "Resonator / comb bank" row above is the nearest entry and is not the same thing: that is a bank on a bus, per-note in sense; this is one keyed line in the voice's own feedback path, ahead of the filter, so the filter sits inside the loop. What the tree has, read at `f6aa8eba`, nothing tried: - The waveguide layer's `Drive::kInput` takes a tap of the voice's bus straight into its line (`dsp/waveguide_layer.h:141`, `:198`, `:996-1000`). So a VA layer followed by a waveguide layer reading its tap is already a keyed comb after the filter, per voice. - The loop through the filter, the Pro's topology, would be the VA layer reading the waveguide's tap back: a self-tap, which is #100's subject, one sample late per hop, which the tuning would have to absorb. - The delay layer's `kTime` is an offset in frames from a zero base (`dsp/delay_layer.h:203-212`), so a key-tracked time there is `kExpScale` on the note in add mode: exponential in key, but a linearly interpolated line in frames, not a tuned one. If "tuned feedback" is wanted as a named thing rather than a patch idiom, it is a waveguide inside the VA layer's loop and belongs beside #100 rather than as a new effect here.
Author
Owner

This comment is here to work around a bug in VS Code. Hello!

This comment is here to work around a bug in VS Code. Hello!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/tymbal#105
No description provided.