Fractal Feedback Reverb — User Guide
Recursive whole-signal delay accumulation with an exponential memory-depth cycle, secondary cosine-modulated delays and an appended reverb tail.
What this does
Fractal Feedback Reverb extends the source with a silent tail, then repeatedly adds delayed copies of the evolving signal. Primary delays follow an exponential cycle controlled by Seed_delay_s, Chaos_factor, and Memory_depth. Every iteration also adds a shorter secondary delay whose amplitude is cosine-modulated.
This creates a dense, recursively accumulated delay texture. The term fractal here refers to the repeating exponential delay pattern. The script is not a conventional feedback delay network (FDN) with a matrix of interacting delay lines.
Quick start
- Select exactly one mono or stereo Sound.
- Run
Fractal_Feedback_Reverb.praat. - Choose a built-in preset or Custom.
- Set tail duration, delay-cycle parameters, amplitudes, modulation frequency and Wet/Dry.
- Click OK. The output is
<source>_fractalReverb_<preset>.
Presets
Built-in presets override all tail, chaos and amplitude controls listed below. Wet/Dry and the two output switches keep the values currently shown in the form.
| Preset | Tail | Iterations | Seed | Chaos | Depth | Amp base | Secondary | Mod Hz |
|---|---|---|---|---|---|---|---|---|
| Subtle | 1.5 s | 20 | 0.06 s | 1.5 | 3 | 0.12 | 0.65 | 25 |
| Medium | 2.0 s | 32 | 0.08 s | 1.8 | 4 | 0.18 | 0.75 | 30 |
| Heavy | 2.8 s | 48 | 0.10 s | 2.1 | 5 | 0.24 | 0.85 | 38 |
| Extreme | 4.0 s | 70 | 0.12 s | 2.5 | 6 | 0.30 | 0.95 | 45 |
| Custom | Uses the form values. | |||||||
Parameters
| Control | Default | Meaning |
|---|---|---|
| Tail_duration_s | 2.0 s | Silence appended before processing; output duration becomes source duration + tail. |
| Iterations | 32 | Number of primary + secondary recursive additions. |
| Seed_delay_s | 0.08 s | Base primary delay. |
| Chaos_factor | 1.8 | Exponential multiplier inside the memory cycle. |
| Memory_depth | 4 | Number of exponent positions before the delay pattern resets. |
| Amplitude_base | 0.18 | Starting scale for the per-iteration random primary coefficient. |
| Secondary_factor | 0.75 | Scales the secondary delayed contribution relative to the primary contribution. |
| Modulation_freq_Hz | 30 Hz | Cosine amplitude modulation applied to the secondary contribution. |
| Wet_dry_percent | 60% | Clamped internally to 0–100%. |
Delay pattern
The primary/secondary delay times themselves are deterministic for a given preset or Custom setting. Randomness enters through the per-iteration amplitude coefficient.
Recursive processing
For each iteration i, the left/mono path calculates:
Each formula operates on the evolving working signal, so later passes build on the result of earlier passes. At the final iteration (i = Iterations), the linear amplitude term reaches zero.
Wet/Dry is applied against the extended dry signal (source followed by silence). The output is then peak-normalized to 0.95.
Channel behavior
Mono
Mono input remains mono. One recursive path is processed and normalized to 0.95.
Stereo
The two channels are processed independently. The right channel uses Chaos_factor + 0.02, Seed_delay + 0.002 s, Modulation_freq - 2 Hz, a different random-amplitude range, and Secondary_factor - 0.03. Left and right are then normalized separately to 0.95 before being combined back to stereo.
Visualization
- Dry waveform.
- Reverb waveform drawn only over 0 to the original source duration; the appended tail is not shown in this waveform panel.
- Delay pattern for the first 20 iterations (or fewer): nominal left/mono primary and secondary delays.
- Memory-depth wrap markers at cycle resets.
- Parameter line and summary strip.
The delay plot does not show random amplitude coefficients and does not show the right-channel offset parameters used during stereo processing.
Output behavior
- Duration: source duration + Tail_duration_s.
- Sample rate: preserved.
- Channels: mono remains mono; stereo remains stereo.
- Normalization: fixed target peak 0.95. Stereo channels are normalized separately before recombination.
- Randomness: random amplitude coefficient on every iteration; no user seed, so repeated runs can differ.
- Time origin: processing concatenates a new extended Sound and does not explicitly restore a non-zero source xmin.