Multiband Distortion — User Guide
Three-band nonlinear processing with complementary zero-phase splitting, independent waveshaping per band, optional drive normalization/compensation, oversampling, and explicit output-level policy.
What this does
Multiband Distortion splits one Sound into complementary low, mid, and high components, applies an independent memoryless nonlinearity to each band, sums the processed bands, optionally blends that wet signal with the original, and then applies an explicit output-level policy.
The complementary reconstruction is algebraic: the same filtered objects used to define the bands are subtracted from one another. With identity band processing, the three components sum back to the working signal. Once the bands are shaped differently, the result is intentionally no longer a reconstruction of the source.
Quick start
- Select exactly one Sound in Praat.
- Choose a preset, or leave Manual to use the main-form settings directly.
- Set Low_Split_Hz and High_Split_Hz.
- For Low, Mid, and High, choose a Drive and one of three shaping types: Soft Clip, Hard Clip, or Sine Waveshaper.
- Set Mix_0_to_1 and Output_Gain.
- Enable Advanced_settings only when you need band gains, drive-normalization behavior, output policy, oversampling, or a different visualization ceiling.
- Run the script. The result is named
<source>_MultiDist_<presetName>.
Band splitting
Complementary subtractive split
The two Praat filters use a 20 Hz smoothing/transition width. The script therefore requires at least 40 Hz between the two crossover frequencies.
| Validation | Rule |
|---|---|
| Low crossover | Must be above 0 Hz. |
| High crossover | Must be below Nyquist. |
| Ordering | Low_Split_Hz < High_Split_Hz. |
| Spacing | At least 40 Hz between the crossovers. |
Waveshaping and Drive
Three shaping types
| Type | Core mapping | Interpretation |
|---|---|---|
| Soft Clip (Tanh) | tanh(inputScale × x) × outputScale | Smooth odd-symmetric saturation. |
| Hard Clip | Clamp the scaled input to ±1, then apply outputScale. | Flat-topped clipping with strong high-frequency generation. |
| Sine Waveshaper | sin(inputScale × x) × outputScale | A sinusoidal waveshaper. It does not begin folding until the argument exceeds ±π/2; with normalized Drive = 1 it remains monotonic over the available ±1-radian range. |
Normalize_drive
With Normalize_drive = ON (default), each band is measured using one whole-file absolute peak. The band is scaled relative to that peak before Drive reaches the waveshaper. This makes Drive less dependent on the raw level of the split band, but it is not local or time-varying normalization.
With Normalize_drive = OFF, the legacy mapping is used directly: the band enters the waveshaper as x × Drive. Drive therefore changes both shaping depth and the linear-region gain.
Drive_compensation
Drive_compensation requires Normalize_drive = ON. When active, the output scale divides out Drive’s linear-region gain. This means Drive primarily controls how deeply the signal enters the nonlinear curve rather than acting as an additional linear gain. It does not guarantee constant band peak or RMS after nonlinear shaping.
If compensation is requested while Normalize_drive is OFF, the script reports that compensation is inactive. Near Drive = 0 with both normalization and compensation active, the procedure bypasses the waveshaper and returns the linear limit x × Gain, avoiding a division-by-zero discontinuity.
Named presets
There are five named presets plus Manual. The five named presets overwrite all eleven band-specific values: two crossovers, three Drive values, three Type selections, and three band Gains.
| Preset | Crossovers | Low | Mid | High |
|---|---|---|---|---|
| Warm Bass / Gentle Highs | 200 / 2500 Hz | Soft, Drive 2.0, Gain 1.1 | Soft, Drive 1.0, Gain 1.0 | Soft, Drive 0.8, Gain 1.0 |
| Frizz (High-Band Hard Clip) | 200 / 1500 Hz | Soft, 1.0, 1.0 | Soft, 1.0, 1.0 | Hard, 3.5, 1.0 |
| V-Shape Destruction | 200 / 2500 Hz | Hard, 2.5, 1.0 | Soft, 1.0, 0.7 | Hard, 2.5, 1.0 |
| Mid-Range Crunch | 400 / 3000 Hz | Soft, 0.6, 0.5 | Sine, 3.0, 1.2 | Soft, 0.6, 0.5 |
| Full Spectrum Fuzz | 200 / 2500 Hz | Hard, 3.0, 1.0 | Hard, 3.0, 1.0 | Hard, 3.0, 1.0 |
Advanced settings
The compact main form keeps musical controls visible. Enabling Advanced_settings opens a secondary dialog with the following defaults:
| Control | Default | Meaning |
|---|---|---|
| Normalize_drive | ON | Whole-file peak normalization into each band’s waveshaper; linked across channels. |
| Low_Gain / Mid_Gain / High_Gain | 1.0 / 1.0 / 1.0 | Post-waveshaper band gain. Named presets overwrite these values. |
| Drive_compensation | OFF | Requires Normalize_drive; removes Drive’s linear-region gain factor. |
| Output_mode | Normalize to 0.95, then output gain | Selects the final peak policy. |
| Oversample | 4 | Oversampling factor for split → shaping → wet sum. 1 disables it; 2 is explicitly refused. |
| Visualization_max_Hz | 8000 | Maximum frequency shown in the spectrum panel, limited by Nyquist. |
Oversampling
When Oversample > 1, the source is resampled upward before splitting and nonlinear processing. The processed wet sum is then resampled back to the original sampling rate. The downsampling stage band-limits the result and therefore reduces fold-back from newly generated high-frequency components.
Wet/dry mix and output stage
Mix
Mix_0_to_1 is validated to the closed interval 0…1. At Mix = 1 only the wet signal is used. At Mix < 1, a copy of the original Sound is combined with the downsampled wet signal. Output_Gain is applied later, in the output stage.
Output modes
| Mode | Exact behavior |
|---|---|
| Normalize to 0.95, then output gain | If the pre-output peak is above 1e-9, scale the mixed signal to peak 0.95, then multiply by Output_Gain. Near-silent material skips normalization but still receives Output_Gain. |
| Preserve level (output gain only) | No peak scaling. Multiply directly by Output_Gain. |
| Output gain, then attenuate to 0.95 only if peak > 0.95 | Apply Output_Gain first. If the resulting peak exceeds 0.95, globally attenuate the entire signal to peak 0.95; otherwise leave it unchanged. |
Scale peak applies one scalar to the whole Sound. It only attenuates globally when the measured peak exceeds the target.The Info report includes source peak, wet-sum peak, pre-output peak, the output-stage decision, measured final peak, effective oversampling, Mix, and Output_Gain. A final peak above 1.0 is explicitly warned about.
Visualization
The v0.7.1 visualization uses the AudioTools compact page layout and directly describes this processor rather than presenting a generic effect graph.
Original waveform
The selected source Sound in gray.
Processed waveform
The final result after Mix and output policy.
Spectral comparison
Original spectrum in gray, result in red, with shaded Low/Mid/High regions and crossover lines. The display ceiling is min(Nyquist, Visualization_max_Hz).
Band settings
Three columns showing each band’s range, type, Drive, and Gain.
Master information
Mix and Output_Gain.
Summary strip
Input, preset, band configuration, effective oversampling, output policy, gain, and final peak.
Interpretation and limitations
- Complementary reconstruction applies before unequal nonlinear processing. Once the bands are shaped differently, their sum is intentionally altered.
- Zero-phase filtering is acausal. Pre-ringing can become audible because nonlinear band processing prevents exact cancellation of the crossover’s symmetric impulse-response tails.
- Oversampling reduces aliasing but is not alias-free.
- Sine Waveshaper is not always a fold. For normalized input and Drive below about π/2,
sin(x)remains monotonic over the available range. - Normalize_drive is global per band. One transient can set gain staging for the entire file; one loud channel can set it for all channels.
- Drive compensation is linear-region compensation. Nonlinear peak/RMS changes remain possible.
- Negative band Gain changes polarity of only that band. This changes inter-band reconstruction, not merely its level.
- Negative Drive behavior depends on normalization/compensation. The Info report calls out the resulting polarity behavior.
- No dynamics analysis or adaptive crossover is used. All crossover and waveshaping settings are static for the whole Sound.