Chaotic Bloom — User Guide
Stochastic convolution effect built from Poisson-distributed pulse trains, fixed six-second chirped envelopes, optional stereo-decorrelated IRs, and a final wet/dry blend.
What this does
Chaotic Bloom generates one or two stochastic impulse responses from Praat Poisson point processes, converts each point process to a pulse-train Sound, shapes it with a raised-sine envelope, exponential decay and accelerating sinusoidal modulation, then convolves the source. The source sample rate and channel count are retained.
Quick start
- Select exactly one Sound.
- Run
Chaotic_Bloom.praat. - Choose Default, Dense Bloom, Sparse Bloom, Wide Stereo Shimmer, or Custom.
- Set Wet/Dry, target peak and visualization/playback as needed.
Output: <source>_bloom_<preset>.
Impulse-response construction
The IR duration is fixed internally at 6 seconds. For the left/shared IR:
IR(t) = pulseTrain(t) × sin²(pi t/T) × 80^(-t/T)
× [1 + 0.8 sin(2 pi × 200 × t²/T)]The quadratic phase gives an instantaneous modulation frequency that rises from 0 to approximately 400 Hz by the end of the 6-second IR. The stereo right IR uses density 1.07 × Poisson_density, adaptation time 0.875 × Pulse_width, interpolation depth about 1.04 × the left value, decay base 75, modulation depth 0.75, and a chirp ending near 360 Hz.
Tail_duration_s does not set the IR/reverb decay length. The IR remains 6 s. The script appends that amount of silence to the source before convolution, so it extends the Sound object's final duration with trailing silence; the audible convolution tail is governed by the fixed 6-second IR.Stereo and multichannel processing
Exactly 2 channels
Left and right are convolved with separate decorrelated IRs. In each channel, dry and convolved signals are first crossfaded with complementary sinusoidal gains: 2.0 Hz on the left channel and 1.8 Hz on the right. This is a dry/convolved crossfade inside each channel; it does not route the left signal into the right channel or vice versa. A second user-controlled Wet/Dry blend is then applied against the original channel.
Mono or 3+ channels
A single shared IR is convolved with the complete Sound, so every channel receives the same IR. There is no 2.0/1.8-Hz crossfade stage in this branch; only Convolution_mix followed by the outer Wet/Dry blend is used.
Presets
| Preset | Tail padding | Density | Adapt. factor | Adapt. time | Interpolation depth | Convolution mix |
|---|---|---|---|---|---|---|
| Default | 2.0 s | 3000/s | 1.0 | 0.04 s | 2500 | 0.40 |
| Dense Bloom | 3.0 s | 4500/s | 1.1 | 0.05 s | 2200 | 0.50 |
| Sparse Bloom | 1.5 s | 1800/s | 0.9 | 0.03 s | 2800 | 0.30 |
| Wide Stereo Shimmer | 2.5 s | 3200/s | 1.0 | 0.035 s | 2600 | 0.35 |
Parameters
| Control | Default | Actual role |
|---|---|---|
| Tail_duration_s | 2.0 | Silent source padding before convolution; not the six-second IR duration. |
| Poisson_density | 3000 | Point-process rate for the left/shared IR; stereo right uses 1.07×. |
| Pulse_amplitude | 1.0 | Praat pulse-train adaptation factor, not literal pulse amplitude. |
| Pulse_width | 0.04 | Praat pulse-train adaptation time in seconds, not literal impulse width. |
| Pulse_period | 2500 | Rounded to the pulse-train sinc interpolation depth in samples; not a period. |
| Convolution_mix | 0.4 | Gain applied to the convolved signal before the later crossfade/mix stage. |
| Wet_dry_percent | 50 | Outer dry/bloom blend, clamped 0–100%. |
| Scale_peak | 0.85 | Final target peak for every non-silent output. |
Output, duration, level and visualization
- Channel count/sample rate: preserved.
- Time origin: output is built from a private zero-based working copy.
- Duration: full convolution length of the source after silent padding with a 6-second IR: approximately
source + Tail_duration_s + 6 sminus one sample. The finalTail_duration_sportion is trailing silence. - Level: every non-silent result is peak-normalized to Scale_peak. This includes 0% wet; it is not an attenuate-only ceiling.
The visualization shows the first 3 s of the generated IR, a parameter/algorithm report, a first-500-ms original/processed overlay, a full waveform comparison on a shared amplitude scale, and a summary strip.