Morphing Resonance — User Guide

Poisson-impulse convolution reverb with a time-varying chirp envelope, decorrelated stereo processing, and a delayed chorus layer.

Author: Shai CohenAffiliation: Department of Music, Bar-Ilan University, IsraelVersion: 0.5.1 (2026)License: MIT LicenseRepo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

Morphing Resonance builds a sparse synthetic impulse response from a Poisson point process, shapes that IR with an exponentially decaying sinusoidal chirp, convolves it with the source, and adds a short delayed chorus layer. The result is a resonant reverb whose spectral emphasis changes through the tail rather than remaining static.

Important chirp detail. The implemented phase is 2π·t·(fstart + frange·t/T). Its instantaneous frequency therefore runs from fstart to fstart + 2·frange. The GUI field Frequency_range_Hz is retained for compatibility with the established presets, so the actual sweep span is twice the entered range.

Quick start

  1. Select exactly one Sound object.
  2. Run Morphing_Resonance.praat.
  3. Choose one of the four built-in presets or Custom.
  4. Set Wet/Dry and, if needed, edit the IR, chirp, chorus, tail, fade, and normalization controls.
  5. Click OK. The processed Sound is created as original_morphing_PresetName.

Presets

PresetTailDensityChirp startRange fieldActual chirp endConv. mixChorus
Subtle Morphing1.5 s1200/s180 Hz600 Hz1380 Hz0.220.20 @ 8 ms
Medium Morphing2.0 s1800/s220 Hz880 Hz1980 Hz0.320.30 @ 10 ms
Heavy Morphing2.5 s2400/s260 Hz1150 Hz2560 Hz0.420.40 @ 12 ms
Extreme Morphing3.5 s3200/s300 Hz1500 Hz3300 Hz0.520.50 @ 15 ms

Presets replace the tail, Poisson, chirp, convolution, chorus, and fade values. Wet_dry_percent, Scale_peak, Draw and Play remain user-controlled.

Parameters

ParameterDefaultMeaning
Tail_duration_s2.0Silent tail appended to the source; output duration is source duration + this tail.
Poisson_density1800Average point density of the synthetic IR.
Exponential_base85Controls the IR decay envelope; internally clamped to at least 1.
Frequency_start_Hz220Initial instantaneous chirp frequency.
Frequency_range_Hz880Legacy range parameter; actual end frequency is start + 2×range.
Modulation_depth0.5Depth of the sinusoidal modulation embedded in the IR envelope.
Chorus_mix0.3Gain of the delayed copy inside the chorus stage.
Chorus_delay_ms10Chorus delay; internally constrained to at least one sample.
Convolution_mix0.32Gain applied to the convolved return before chorus and final wet/dry extraction.
Wet_dry_percent60True crossfade: 0% = dry only, 100% = effect only.
Fadeout_duration_s1.0Cosine fade applied only inside the appended tail; capped at Tail_duration_s.
Scale_peak0.9Target peak normalization for every non-silent result, not a ceiling-only limiter.

Processing pipeline

  1. Append a silent tail with the same channel count as the source.
  2. Create a 4.5 s Poisson process and convert it to a pulse-train Sound.
  3. Apply exponential decay plus the chirp modulation formula to the IR.
  4. Convolve the extended source with that IR and scale the convolution return.
  5. Create a delayed chorus copy using the convolved signal itself.
  6. Construct an internal dry + effect buffer, then explicitly extract the effect and perform the requested wet/dry crossfade.
  7. Fade only the appended tail and normalize the final non-silent result to Scale_peak.

Channels, randomness & output

Stereo: left and right channels are processed separately. The right IR uses slightly different density, duration, decay, modulation, chirp, convolution, chorus, and delay values for decorrelation. The two channels are recombined before final peak normalization so their relative balance is retained.

Mono and 3+ channels: the full multichannel Sound is processed with one shared mono IR; the original channel count is preserved. The script does not downmix these inputs.

The Poisson processes are not explicitly seeded, so repeated runs may produce different IR realizations. Output name: original_morphing_Custom|Subtle|Medium|Heavy|Extreme.

Visualization

The visualization includes the actual instantaneous-frequency sweep, the real generated IR waveform, a short dry/result zoom overlay, the complete output waveform, and a compact summary. The chirp panel intentionally shows the actual sweep from fstart to fstart + 2×frange, matching the DSP rather than the GUI label.