Convolution Synthesis — User Guide
Excitation–resonator synthesis by discrete convolution: a short source excites a three-mode decaying impulse response, producing a resonant sound whose spectrum and decay follow the IR.
What this does
Convolution Synthesis generates a new sound from two internally created signals: a short excitation and a resonant impulse response (IR). The excitation supplies the initial event or energy; the IR supplies three decaying resonant modes. Their discrete convolution produces the resonant output.
This is synthesis from scratch: the script does not process a selected input Sound. The source and IR are created internally, normalized to unit discrete L2 energy, convolved, shaped by an optional output envelope, spatialized, and optionally peak-normalized.
Convolution in plain language
Think of the excitation as what strikes or activates a resonant system, and the impulse response as the system's characteristic reaction. Convolution applies that reaction across the excitation. A short click therefore lets the resonator itself dominate; a noise or tone burst feeds a broader or more pitched spectrum into the same resonant structure.
Core relation: output[n] = Σ source[k] × IR[n-k]
The script uses Praat's Convolve: "sum", "zero". With the one-sample Impulse excitation, this convention reproduces the normalized IR directly before the later envelope, spatialization and optional final normalization.
Convolution here should not be confused with convolution reverb using a recorded room IR. The IR is synthesized by the script from three damped sinusoidal modes, so the technique functions as an excitation–resonator synthesizer.
Quick start
- Run Convolution Synthesis.praat. No input Sound needs to be selected.
- Choose a Preset, or leave Custom to use the fields below.
- Choose an Excitation. Start with Impulse if you want to hear the resonant IR most directly.
- Set Frequency 1, Frequency 2, and Decay rate to define the resonator.
- Optionally choose an output Envelope and Spatial mode.
- Click OK. The final Sound remains in the Objects window; helper Source and IR objects are removed after the visualization is drawn.
Signal path
excitation → unit-energy normalization → resonant IR → unit-energy normalization → discrete convolution → exact-duration trim/zero-pad → musical envelope → edge fade → spatial render → optional peak normalization
The source and IR are normalized before convolution. This keeps source-type and decay changes from acting merely as uncontrolled level changes; their waveform, spectrum and temporal structure still strongly affect the result.
Parameters
| Parameter | Default | What it controls |
|---|---|---|
| Preset | Custom | Loads one of 11 mechanism-oriented parameter sets. Presets override only the fields explicitly listed in the preset section. |
| Duration_s | 1.0 s | Exact final output duration; valid range is greater than 0 to 120 s. |
| Sample_rate_Hz | 44100 | Sampling rate, constrained to 8–192 kHz. |
| Frequency_1_Hz | 800 Hz | First IR resonance and the Tone Burst frequency. |
| Frequency_2_Hz | 1200 Hz | Second IR resonance. |
| Decay_rate | 20 s⁻¹ | Exponential decay constant of the slowest IR mode. Larger values produce shorter ringing. |
| Modulation_rate_Hz | 2 Hz | Gentle amplitude modulation applied only to the third IR mode. |
| Source_type | Impulse | Impulse, Short Burst, Noise Burst, or Tone Burst. |
| Random_seed | 0 | Controls Noise Burst reproducibility. Positive values fix the random sequence; 0 leaves it unpredictable. |
| Envelope_type | No Envelope | Global musical envelope applied after convolution. |
| Spatial_mode | Mono | Mono, short-delay Stereo Wide, or equal-power Rotating stereo. |
| Edge_fade_s | 0.005 s | Independent linear protection fade at both output edges, limited to 20% of total duration. |
| Normalize_output | On | If enabled, sets the final absolute peak to 0.90. |
| Draw_visualization | On | Draws the actual excitation, IR, measured output spectrum/waveform and QC summary. |
| Play_result | On | Plays the final Sound after synthesis. |
Presets
The preset names describe the sonic morphology produced by this three-mode resonator; they are not claims that the script physically models a particular instrument or object.
| Preset | Duration | f1 / f2 | Decay | Excitation | Envelope | Spatial |
|---|---|---|---|---|---|---|
| Bright Metallic Ring | 1.5 s | 760 / 1230 Hz | 12 | Noise Burst | None | Mono |
| Deep Resonant Ring | 3.5 s | 90 / 170 Hz | 3.5 | Noise Burst | None | Mono |
| High Glassy Ring | 1.2 s | 1550 / 2570 Hz | 18 | Impulse | None | Stereo Wide |
| Short Noisy Resonance | 0.6 s | 220 / 3600 Hz | 70 | Noise Burst | Percussive | Mono |
| Low Impact Resonance | 0.7 s | 55 / 95 Hz | 30 | Impulse | Percussive | Mono |
| Droplet Resonance | 0.55 s | 720 / 1450 Hz | 45 | Impulse | None | Stereo Wide |
| Hollow Pop | 0.35 s | 320 / 650 Hz | 90 | Impulse | Percussive | Mono |
| Inharmonic Chime | 1.4 s | 900 / 1450 Hz | 14 | Short Burst | None | Rotating |
| Dense High Burst | 0.9 s | 1850 / 4300 Hz | 85 | Noise Burst | Percussive | Stereo Wide |
| Rising Resonant Tone | 0.8 s | 350 / 1800 Hz | 40 | Tone Burst | Reverse Envelope | Stereo Wide |
| Long Low Noise Decay | 4.0 s | 50 / 120 Hz | 2.5 | Noise Burst | Slow Decay | Stereo Wide |
Not overridden by the built-in presets: Sample rate, Random seed, Edge fade, Normalize output, Draw visualization, and Play result retain the values currently shown in the form.
Excitation types
| Type | Actual source | Duration | Effect |
|---|---|---|---|
| Impulse | One sample with value 1 before source normalization | 1 sample | The cleanest way to hear the synthesized IR itself. |
| Short Burst | Hann-windowed sine; frequency is min(1000 Hz, half of the internal safety ceiling) | up to 10 ms | Injects a short pitched excitation with broader spectral spread than a long tone. |
| Noise Burst | Hann-windowed Gaussian noise | up to 20 ms | Broadband excitation; Random_seed controls repeatability. |
| Tone Burst | Hann-windowed sine at Frequency 1 | up to 50 ms | Emphasizes the relationship between the excitation pitch and the IR modes. |
Each excitation is normalized to unit discrete L2 energy before convolution. The differences between source types therefore come primarily from their time/spectral shape rather than arbitrary source level.
Resonant impulse response
The IR is the sum of three damped modes:
| Mode | Frequency | Relative amplitude | Decay | Extra behavior |
|---|---|---|---|---|
| 1 | f1 | 1.0 | exp(-d·t) | None |
| 2 | f2 | 0.7 | exp(-1.5d·t) | Fixed phase offset |
| 3 | 1.5·f1 | 0.4 | exp(-2d·t) | Gentle AM: 0.75 + 0.25 sin(2π·Modulation_rate·t) |
The slowest exponential reaches an amplitude ratio of approximately 0.001 (−60 dB) after ln(1000) / Decay_rate seconds. The script uses this value to determine the IR duration, but never renders an IR longer than the requested final Duration.
Before synthesis, the resonance and modulation frequencies are scaled together if necessary so the highest modeled components retain practical headroom below 0.45 × sample rate. This is a practical anti-aliasing guard, not a claim that every possible sideband is mathematically band-limited.
Output envelopes
These envelopes are applied after convolution, so they shape the complete resonant result rather than the excitation or IR separately.
| Envelope | Implementation |
|---|---|
| No Envelope | No additional musical amplitude shaping. |
| Percussive | exp(-8t). |
| Slow Decay | exp(-1.5t). |
| Reverse Envelope | Linear crescendo t / Duration. It does not reverse the waveform in time. |
| Tremolo | 8 Hz sinusoidal multiplier ranging from 0.6 to 1.0. |
| Swell | Linear fade-in over the first 30% of the requested duration, then sustain. |
| ADSR | One piecewise pass: attack up to 10 ms, decay up to 100 ms, sustain 0.60, release up to 200 ms; stages shorten automatically for short sounds. |
Spatial modes
| Mode | Implementation |
|---|---|
| Mono | Keeps the convolved result as one channel. |
| Stereo Wide | Left is the mono result scaled by 1/√2; right is a delayed copy scaled by 1/√2. Delay is min(8 ms, 2% of Duration). This is short-delay decorrelation, not frequency splitting. |
| Rotating | Creates stereo with complementary equal-power gains driven by a 0.35 Hz sinusoidal pan trajectory. |
Duration, level & reproducibility
Exact output duration: Praat's raw convolution naturally contains the complete source-plus-IR result. The script then creates a new Sound with exactly Duration_s at the requested sample rate and copies samples by index. If the raw convolution is longer it is trimmed; if shorter, the remainder is zero-padded. No time-axis interpolation or time stretching is performed.
Normalization: Source and IR receive unit-energy normalization before convolution. If Normalize output is enabled, the final mono or stereo result is then peak-normalized to exactly 0.90 when non-silent. This is target peak normalization, not an attenuate-only ceiling.
Noise reproducibility: Random_seed affects only Noise Burst. A positive seed makes that excitation reproducible; 0 uses the current unpredictable random state. The deterministic excitation types do not use the seed.
Visualization
The figure follows the actual synthesis path rather than presenting a generic convolution diagram:
| Panel | What is shown |
|---|---|
| A — Excitation | The actual unit-energy source used in the convolution, with its own true short time axis. |
| B — Impulse Response | The actual normalized three-mode IR and its rendered duration. |
| C — Model → Measurement | A measured spectrogram of the output with guides at f1, f2 and 1.5·f1. These are nominal resonance guides, not measured peak trackers. |
| D — Measured Output | The measured waveform of the output. For stereo, the channel with the larger RMS is used as the representative display channel. |
The QC block reports the convolution convention, source duration, unit-energy normalization, IR T60/rendered duration, pre-normalization peak, final peak/RMS and spatial mode.
Outputs
- Final object:
convolution_<Preset_Name>, with spaces in the preset name replaced by underscores. - Channels: 1 for Mono; 2 for Stereo Wide or Rotating.
- Sample rate: exactly the requested Sample_rate_Hz.
- Duration: exactly Duration_s.
- Helper objects: the temporary excitation and IR are retained long enough for visualization, then removed; only the final output remains selected.
- Playback: optional via Play_result. The script does not write an audio file automatically.