Temporal Erosion — User Guide

Poisson-IR convolution reverb with logarithmic decay, bounded Gaussian roughening and Hann-band spectral shaping.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.4.1 (2026) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

Temporal Erosion is a convolution reverb built from a dense Poisson impulse response. The IR is shaped by a logarithmic decay envelope, sample-wise Gaussian amplitude roughening, and a Hann spectral window. The logarithmic envelope falls quickly at the beginning and progressively more slowly toward the end, while the random multiplier gives the IR an eroded, irregular surface.

What is convolution reverb? A convolution reverb applies an impulse response (IR) to a source. Every impulse in the IR produces a delayed, weighted contribution from the source. Here the IR is generated algorithmically rather than measured from a physical room.

For stereo input, left and right IRs are generated separately with slightly different duration, Poisson density, erosion strength and filter bands. A single common IR-energy gain is then applied to both sides to preserve their relative balance.

Quick start

  1. Select exactly one mono or stereo Sound.
  2. Run Temporal_Erosion.praat.
  3. Choose Subtle, Medium, Heavy, Extreme, or Custom.
  4. Use Poisson_density for event density and Erosion_randomness for sample-wise amplitude roughness.
  5. Set the Hann filter band with Low_cutoff_Hz, High_cutoff_Hz and Smoothing_Hz.
  6. Set wet/dry and run.

Presets

PresetTailIR durationDensityBandSmoothingErosion σFadeWet
Subtle Erosion2.0 s3.0 s1500/s120–7000 Hz80 Hz0.201.0 s35%
Medium Erosion3.0 s5.0 s2500/s100–8000 Hz100 Hz0.301.2 s50%
Heavy Erosion4.0 s7.0 s4000/s80–9000 Hz120 Hz0.401.5 s65%
Extreme Erosion5.0 s10.0 s6000/s60–10000 Hz150 Hz0.502.0 s80%
CustomUses the values entered in the form.

Parameters

ParameterDefaultMeaning
Tail_duration_s3.0 sRequested output tail beyond the dry source.
Impulse_duration_s5.0 sDuration of the left/mono Poisson IR before the output is mapped into the fixed output canvas.
Poisson_density2500/sAverage event rate of the left/mono Poisson process.
Low_cutoff_Hz / High_cutoff_Hz100 / 8000 HzRequested Hann pass band. The high cutoff is limited to 95% of Nyquist.
Smoothing_Hz100 HzTransition width, automatically limited so transitions remain inside the usable spectrum.
Erosion_randomness0.30Standard deviation of the Gaussian sample-wise multiplier. Negative values are clamped to zero.
Wet_dry_percent50%Linear wet/dry mix.
Fadeout_duration_s1.2 sCosine fade on the wet tail only, limited to the requested tail duration.
Draw_visualizationyesDraw the dry/output waveforms, decay law, effective spectral window and summary.
Play_resultyesPlay the resulting Sound when processing finishes.

IR construction

normalized IR time: τ = (x - xmin) / (xmax - xmin) log envelope: E(τ) = 1 - log10(1 + 9τ) roughness: R = clamp(randomGauss(1, σ), 0, 2) IR sample: pulseTrain × E(τ) × R

The envelope starts at 1 and reaches exactly 0 at the IR end. The roughness multiplier is independently generated sample by sample and bounded to 0–2. The result then passes through a Hann band filter.

For stereo, the right IR is deliberately decorrelated: duration = 0.96×, density = 0.92×, erosion sigma = 1.17×, the lower cutoff is shifted upward, the upper cutoff slightly downward, and smoothing is reduced when possible.

Randomness: no seed is set, so the Poisson events and Gaussian erosion pattern change between runs.

IR energy, duration and level

Before convolution, the IR is normalized by discrete energy, not by peak. In stereo, the script measures both IR energies and applies one common gain based on the larger energy, preserving left/right balance.

Visualization

The display includes dry and output waveforms, a plot of the exact logarithmic decay law, and the effective Hann spectral window. For stereo, the right-channel spectral window is shown as a separate dashed curve. The summary reports IR duration, tail, density, erosion sigma, effective filter band, fade and output duration.

Output

The result is named <source>_erosion_<preset> with Custom, Subtle, Medium, Heavy or Extreme.