Harmonic Decay Reverb — User Guide
Power-law recursive echo field with tail fitting, stochastic decay, stereo decorrelation, true reflections-only wet mixing, and an explicit echo-map visualization.
What this does
Harmonic Decay Reverb creates a reverb-like field from a bank of recursive delays. The nominal delay sequence follows a power law:
Higher Harmonic_spread compresses the delay pattern; lower values spread later echoes farther apart. If the raw pattern would exceed the available tail, the entire curve is rescaled so the last echo fits at 95% of the tail. Gains decrease by Decay_factor^k and are multiplied by Gaussian random variation.
Quick start
- Select exactly one Sound.
- Run
Harmonic_Decay_Reverb.praat. - Choose a preset or Custom.
- Use Harmonic_spread for the temporal spacing curve and Decay_factor for the iteration-dependent gain envelope.
- Set Wet_dry_percent; 100% returns the reflection component without the embedded dry signal.
- Run the script. The result is named
original_harmonic_Preset.
Presets
| Preset | Tail | Echoes | Base delay | Spread | Decay | Amp mean ± SD | Fade |
|---|---|---|---|---|---|---|---|
| Subtle Harmonic | 1.0 s | 30 | 0.04 s | 1.4 | 0.94 | 0.18 ± 0.05 | 0.8 s |
| Medium Harmonic | 1.5 s | 48 | 0.05 s | 1.2 | 0.92 | 0.25 ± 0.08 | 1.0 s |
| Heavy Harmonic | 2.0 s | 70 | 0.06 s | 1.0 | 0.90 | 0.32 ± 0.10 | 1.4 s |
| Extreme Harmonic | 3.0 s | 100 | 0.08 s | 0.8 | 0.88 | 0.38 ± 0.12 | 1.8 s |
Parameters
| Parameter | Default | Behavior |
|---|---|---|
| Tail_duration_s | 1.5 | Silent tail appended before the recursive delay processing. |
| Number_of_echoes | 48 | Number of recursive delay stages. |
| Base_delay_s | 0.05 | Base of the nominal power-law delay sequence. |
| Harmonic_spread | 1.2 | Spacing control; internal exponent is 1/spread. |
| Decay_factor | 0.92 | Per-index exponential amplitude factor. |
| Amplitude_mean / stddev | 0.25 / 0.08 | Gaussian multiplier for each echo stage. Final stage gains are clamped to 0.01–0.99. |
| Fadeout_duration_s | 1.0 | Cosine fade confined to the appended tail. |
| Wet_dry_percent | 60 | Clamped to 0–100; 0 = dry-only, 100 = reflections-only. |
Delay and channel engine
Nominal delays are calculated before processing. If the final raw delay would exceed 0.95 × Tail_duration_s, every delay is scaled by the same factor so the full pattern fits the tail. Very small delays are kept at a minimum of two samples.
Each stage is applied as self + amp × self(x-delay). Because self reads the already modified signal, these are recursive delayed additions, not a simple bank of independent feed-forward taps.
Channels
- Mono input: converted to stereo before reverb processing. The dry signal is centered, while the two reverb channels are decorrelated.
- Stereo input: left and right channels are processed separately. The right side uses ±2% delay perturbation and independent random amplitudes.
- 3+ channels: original channel count is preserved. The same precomputed delay/gain sequence is applied to every channel.
There is no exposed random seed, so the echo amplitudes—and in stereo, the right-channel delay perturbations—change from run to run.
Wet/Dry and level
The last part of the appended tail receives a cosine fade. Peak handling is a safety ceiling only: stereo channels are checked independently before recombination; the shared 3+ channel object is checked as a whole. Quiet results are not boosted.
Output and visualization
- Name:
original_harmonic_Preset. - Duration: original duration +
Tail_duration_s. - Sample rate: preserved.
- Time domain: a private zero-based work copy is used, so the output is zero-based rather than retaining a non-zero source
xmin. - Channel count: mono becomes stereo; stereo remains stereo; 3+ channels are preserved.
The visualization shows the original waveform, the complete result including its tail, and the precomputed nominal echo map (delay versus random gain) together with the mean exponential decay envelope. For stereo output, the plotted echo map corresponds to the left/nominal sequence; the right channel has its own small perturbations.