Entropy-Modulated Dynamic Reverb — User Guide
Offline adaptive convolution reverb that measures short-time spectral entropy and uses it to blend two stochastic IRs and control a time-varying wet amount.
What this does
Entropy-Modulated Dynamic Reverb analyzes short-time spectral entropy from the selected Sound, smooths that control curve, creates two random-noise impulse responses, convolves the source with both IRs, and continuously crossfades between the two reverberated signals. The same entropy curve also drives a dynamic wet amount. A second, global Wet_dry_percent then blends that adaptive result with the dry signal.
What is spectral entropy?
Spectral entropy describes how concentrated or spread the spectral power is inside each analysis frame. The script treats the normalized power spectrum as a probability distribution:
p[k] = power[k] / Σ powerH = −Σ p[k] log2(p[k])Hnorm = H / log2(N)A spectrum dominated by a few bins tends toward lower entropy; a flatter distribution tends toward higher entropy. The script uses the value as a control descriptor, not as a perceptual classification guarantee.
What is convolution reverb?
An impulse response (IR) describes how an effect responds to an impulse. Convolution applies that response to every sample of the source and sums the shifted copies. Measured convolution reverb uses an IR recorded in a physical space; this tool instead generates two synthetic stochastic IRs from Gaussian noise and exponential amplitude envelopes.
Analysis & control mapping
- Speed mode: Full Quality analyzes at the original sample rate; Balanced downsamples analysis to 16 kHz when the source rate is higher; Fast uses 8 kHz. Rendering/convolution remains at the original sample rate.
- Spectrogram: Gaussian window, user window and hop, fixed 20 Hz frequency step, and maximum analysis frequency
min(3000 Hz, analysis Nyquist). - Entropy: computed from power in every spectrum slice and normalized by
log2(number of bins). Very small probabilities (≤ 1e−7) are ignored. - Smoothing:
y[n] = alpha × x[n] + (1−alpha) × y[n−1]. Larger alpha follows changes more quickly. - Control signal: the smoothed frame values are converted to a mono step-held control Sound. The same control is used across every output channel.
Two mappings
The dark/bright crossfade is always dark × (1−entropy) + bright × entropy. Invert_mapping does not reverse that crossfade; it only reverses how entropy maps to the dynamic wet amount:
normal: wet = minWet + (1−entropy) × (maxWet−minWet)inverted: wet = minWet + entropy × (maxWet−minWet)Dark & bright IRs
Both IRs are mono Gaussian-noise signals generated at the original sample rate. Each is shaped only by broadband exponential amplitude decay and then peak-normalized to 0.9:
dark(t) = noise × exp[−t × (5 + 10·Damping_dark) / Reverb_time_dark]bright(t) = noise × exp[−t × (8 + 3·Damping_bright) / Reverb_time_bright]Damping, this version does not apply a low-pass or frequency-dependent damping filter. The damping values only increase the broadband exponential decay rate. Likewise Reverb_time_*_s is the IR object duration and a decay-scaling parameter; it is not a measured or guaranteed RT60.The two convolutions are each independently peak-normalized to 0.95 before adaptive mixing. Their random Gaussian excitation has no user seed, so repeated runs can differ.
Presets
| Preset | Window / hop | α | Dark: time / damping | Bright: time / damping | Dynamic wet min–max |
|---|---|---|---|---|---|
| Subtle Reactive | 30 / 30 ms | 0.20 | 1.8 s / 0.70 | 0.8 s / 0.25 | 0.15–0.60 |
| Medium Reactive | 25 / 25 ms | 0.15 | 2.5 s / 0.80 | 1.0 s / 0.30 | 0.10–0.90 |
| Heavy Reactive | 20 / 20 ms | 0.10 | 3.5 s / 0.85 | 1.2 s / 0.35 | 0.20–0.95 |
| Extreme Reactive | 15 / 15 ms | 0.08 | 4.5 s / 0.90 | 0.6 s / 0.20 | 0.05–1.00 |
| Custom | Uses the form values. | ||||
Speed_mode, Invert_mapping, global Wet_dry_percent, Draw, or Play.Output & channel behavior
- Name:
source_entropyReverb_Preset. - Channels: source channel count is preserved. Both mono IRs are applied across the source channels, while the entropy/wet control is shared across channels.
- Sample rate: original sample rate is preserved in rendering.
- Duration: output lasts as long as the longer dark/bright convolution. The dry signal and entropy controls are zero-padded to that duration.
- Global wet/dry: applied after the entropy-driven internal mix.
- Peak handling: every non-silent final output is normalized to a target peak of 0.95. This is not an attenuate-only ceiling.
- 0% overall wet: still produces the extended zero-padded duration and still undergoes target peak normalization; it is not an identity bypass.
- Selection: after processing the script reselects the original Sound, although the rendered output remains in the Objects list.
Visualization
The picture shows the original waveform, only the original-duration portion of the result waveform, the smoothed entropy trajectory, the beginning of each generated IR, and a summary strip. The reverberation tail beyond the original duration is therefore present in the output but not shown in the Result panel. The entropy plot is decimated to at most roughly 500 displayed segments.