Resonant Comb Cascade — User Guide

A cascade of recursive feedback comb filters that turns one delay period into resonant, echoing, and swelling delay structures.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 1.4 (2026) License: MIT License Repo: Praat AudioTools
Contents:

What this does

Resonant Comb Cascade processes the source through one or more recursive feedback-comb stages. Each stage combines the current input with a delayed version of its own output, so a single delay period generates a train of regularly spaced echoes. Cascading several stages reshapes that train into a denser resonant response whose amplitude can build before it decays.

The delay may be fixed or chosen randomly once per run. Short delays emphasize a regularly spaced comb spectrum and produce metallic or resonant coloration; longer delays separate the repeated structures in time. Cascade stages control the order of the cascaded filter, while Feedback amount controls how strongly each stage carries energy forward from one delay period to the next.

Core idea: one stage is a feedback comb, y[n] = x[n] + fb · y[n-D]. The script applies that same stage repeatedly in series. The result is therefore a cascaded resonator rather than a simple “repeat N times” delay.

Quick start

  1. Select exactly one Sound object in Praat.
  2. Run Resonant.praat.
  3. Choose a preset or Custom.
  4. Choose Random or Fixed delay mode. Presets set the delay range/value, but they do not change this mode.
  5. Set Dry/Wet mix. A value of 0 is an exact dry bypass.
  6. Leave Safety peak at 0.99 for attenuation-only peak protection, or adjust it as needed.
  7. Enable Show spectrum if you want the lower visualization panel to compare spectra instead of showing the processed waveform.
Listening guide: very short delays emphasize comb coloration; longer delays make the periodic structure easier to hear as echoes. Increasing the number of stages changes the shape of the cascade response, not merely the number of repeats.

Signal flow

Input Sound ↓ Resolve one delay D ↓ Recursive comb stage 1 ↓ Recursive comb stage 2 ↓ ... up to Cascade_stages ↓ Wet signal ↓ Linear Dry/Wet mix with original ↓ Safety attenuation if peak > Safety_peak ↓ Output Sound

Every stage operates on the full Sound and processes every channel independently. The wet signal is not normalized before the dry/wet mix.

Presets

The named presets override Cascade stages, Feedback amount, Delay samples, and Dry/Wet mix. They do not override Delay mode, Random seed, Safety peak, Show spectrum, visualization, or playback.

PresetStagesFeedbackDelay samplesWet
Custom200.50100070%
Light Echo50.50100070%
Medium Resonance100.50150070%
Dense Resonance200.50200070%
Extreme Resonance300.60250070%
Subtle Texture30.4080070%
Metallic Comb200.605060%
Short Comb100.503050%
Short Random Echo30.40200050%
Cathedral-like Resonance250.55300070%
Small Room-like Resonance80.4550050%
Long Random Echo50.50300050%
Preset names such as Short Random Echo and Long Random Echo describe their intended use, but the actual delay is random only when Delay mode = Random. With Fixed mode, the preset uses its listed delay exactly.

Parameters

ParameterDefaultMeaning
Cascade stages20Number of recursive comb stages connected in series. Internally constrained to 1–50.
Feedback amount0.5Feedback coefficient for every stage. Internally constrained to 0–0.9.
Delay modeRandomRandom: choose one integer delay uniformly from 1…Delay samples. Fixed: use Delay samples exactly.
Delay samples1000Maximum random delay or fixed delay. Rounded to an integer and limited to the available Sound length.
Random seed00 gives a new unpredictable random delay; a non-zero seed makes the random delay reproducible.
Safety peak0.99Attenuation-only final peak ceiling. It never raises a quiet result.
Dry/Wet mix0.7Linear wet proportion from 0 to 1. At 0, processing and safety attenuation are skipped for an exact bypass.
Show spectrumOffChanges the lower visualization panel from output waveform to input/output spectrum overlay.
Draw visualizationOnDraw the AudioTools diagnostic page.
Play resultOnAudition the selected output when processing finishes.

Delay time in milliseconds is 1000 · D / sampleRate. The corresponding comb spacing is sampleRate / D Hz.

Cascade response

One stage

y[n] = x[n] + fb · y[n-D] H(z) = 1 / (1 - fb · z^-D)

Praat evaluates Sound formulas from earlier to later samples, so self[col-D] can refer recursively to samples already computed in the same Formula operation. Out-of-range references before the beginning of the Sound evaluate to zero.

N stages in series

H_N(z) = 1 / (1 - fb · z^-D)^N At times kD: h[kD] = C(k + N - 1, N - 1) · fb^k

The binomial factor is why a multi-stage cascade can rise before it decays. The number of stages therefore changes both the density and the temporal envelope of the resonant response. The visualization’s impulse-coefficient panel draws this theoretical sequence and normalizes it only for display.

Finite Sound duration: the script processes inside the existing Sound object and does not extend it. Echoes or resonance that would mathematically continue beyond the original end time are truncated at that boundary.

Input & output behavior

PropertyBehavior
ChannelsPreserved. Mono, stereo, and multichannel Sounds are processed channel-by-channel; channels are not folded together.
Sample ratePreserved.
DurationPreserved exactly; no effect tail is appended.
Start time (xmin)Preserved.
Dry/Wet = 0Exact copy of the input; filtering and safety attenuation are skipped.
Output levelNo loudness normalization. With wet > 0, the final mix is attenuated only if its peak exceeds Safety peak.
Output nameoriginalName_PresetName.

If safety attenuation is required, one gain factor is applied to the complete multichannel result, preserving channel balance and the dry/wet ratio.

Visualization

The visualization uses temporary mono display copies only; it does not alter the output Sound.

Further Reading