Fast Waveset Distortion — v1.6 User Guide
Stereo‑aware, chunk‑based audio distortion inspired by waveset processing. Ten operation modes: Stutter, Gaps, Reverse, Shuffle, Stretch, Compress, Pumping, Ring modulator, Bitcrush, Tremolo. Processes left and right channels with independent parameters for a wide stereo image. Hann window fades eliminate clicks between chunks.
What this does
Fast Waveset Distortion applies chunk‑based audio effects inspired by waveset processing, but uses fixed‑length chunks rather than zero‑crossing segmentation for speed. The audio is divided into overlapping chunks (with Hann window fades), each chunk is processed independently, and the results are concatenated. Left and right channels are processed with slightly different parameters to create a wide stereo image.
- 10 operation modes covering classic waveset effects (stutter, gaps, reverse, shuffle, stretch/compress, pumping, ring mod, bitcrush, tremolo).
- 10 named presets (Glitch Stutter, Rhythmic Gaps, Backwards Chunks, Random Shuffle, Slow Motion, Fast Forward, Sidechain Pump, Robot Voice, Lo‑Fi Crush, Wobble Tremolo).
- Stereo processing: left and right channels processed separately with Stereo_spread offset for width.
- Hann window fades (attack and release) eliminate clicks at chunk boundaries.
- Wet/dry mix control to blend with original.
- Normalisation and visualisation matching other AudioTools scripts.
Quick start
- In Praat, select exactly one Sound object (mono or stereo).
- Run script… →
Fast_Waveset_Distortion.praat. - Choose a Preset:
- Glitch Stutter, Rhythmic Gaps, Backwards Chunks, Random Shuffle, Slow Motion, Fast Forward, Sidechain Pump, Robot Voice, Lo‑Fi Crush, Wobble Tremolo
- For custom mode (preset = Custom), select a Mode (1–10) and adjust parameters:
- Amount – strength of the effect (mode‑dependent).
- Chunk_ms – chunk duration in milliseconds.
- Fade_ms – Hann fade duration (must be ≤ chunk/2).
- Stereo_spread – difference in parameters between L/R (0 = identical).
- Mix – blend between processed and original (0–1).
- Click OK. The script processes left and right channels independently, combines them, and creates a new Sound object named
originalname_WSD_preset.
The 10 presets (+ Custom)
Operation modes (10)
| Mode | Amount meaning | Effect description | |||||
|---|---|---|---|---|---|---|---|
| 1. Stutter | Number of repeats (rounded, 2–8) | Each chunk is repeated Amount times, with exponential decay (×0.85 per repeat). Produces classic glitch stutters. |
|||||
| 2. Gaps | Skip denominator | 。||||||
| 3. Reverse | Ignored | 。||||||
| 4. Shuffle | Ignored | 。||||||
| 5. Stretch | Time factor (1.1–∞) | 。
All modes apply Hann window fades to each chunk (attack and release) to eliminate clicks at boundaries. The fade duration is clamped to ≤ chunk_ms/2.
Parameters & defaults
Preset & Mode
Select a preset to load pre‑configured settings, or choose “Custom” to set manually.
Amount
Interpretation depends on mode (see table above). Typical range 1–10.
Chunk_ms
Duration of each processing chunk in milliseconds. Smaller chunks = more detailed, more CPU.
Fade_ms
Hann fade duration at start and end of each chunk. Must be ≤ chunk_ms/2. Larger fades = smoother crossfades, but may alter transient clarity.
Stereo_spread
Controls the difference between left and right channel processing:
- Left: uses exact Amount and Chunk_ms.
- Right: Amount × (1 + spread×0.5), Chunk_ms × (1 + spread).
Spread = 0 → identical channels (mono). Spread = 0.3 → noticeable stereo width.
Mix
Wet/dry blend: 0 = original only, 1 = fully processed. Allows parallel processing and subtle effects.
Output
- Normalize_output – scale peak to 0.95.
- Show_visualization – draw original, left, right, and parameter panel.
Stereo processing
🎧 Wide stereo image
Fast Waveset Distortion processes left and right channels independently. The right channel uses modified parameters:
amount_R = amount × (1 + stereo_spread × 0.5)chunk_ms_R = chunk_ms × (1 + stereo_spread)
This creates a natural, decorrelated stereo image. For a mono output (identical channels), set Stereo_spread = 0. For extreme width, try spread = 0.5–1.0.
The processing pipeline:
- Convert stereo source to mono (downmix).
- Process two copies of the mono signal with different parameters → left and right processed channels.
- Trim both to the same duration (shorter of the two).
- Combine to stereo.
- Optionally blend with original stereo source (if Mix < 1).
Visualization (Praat picture)
When Show_visualization = 1, the script draws a 4‑panel figure:
- Original waveform (grey).
- Left channel processed waveform (blue).
- Right channel processed waveform (red).
- Parameter summary – preset name, mode, amount, chunk, fade, spread, mix.
FAQ / troubleshooting
The script applies Hann window fades to each chunk by default. If you still hear clicks, increase Fade_ms. The fade is applied as a formula part (C‑level), so it’s fast and click‑free when long enough. Ensure fade_ms ≤ chunk_ms/2.
The script uses SR override + resample to time‑stretch. If the new sample rate exceeds 96 kHz (for compress) or falls below 100 Hz (for stretch), the operation is skipped for that chunk. Reduce Amount to keep within safe bounds.
Chunk_ms = 10 ms gives 1000 chunks per 10 seconds. Each chunk involves multiple Praat operations (extract, formula, concatenate). For real‑time preview, use larger chunks (50–100 ms). For offline processing, smaller chunks are fine but slower.
Traditional waveset distortion uses zero‑crossing boundaries, which requires per‑wave processing and can be slow for sounds with many zero crossings. This script uses fixed‑length chunks, which are faster to extract and process, and the result is similar in character for many applications. The name distinguishes it from the “true” waveset distortion script in the collection.
The formula levels = max(2, round(16 / amount)) means:
- Amount = 1 → levels = 16 (4‑bit)
- Amount = 2 → levels = 8 (3‑bit)
- Amount = 4 → levels = 4 (2‑bit)
- Amount = 8 → levels = 2 (1‑bit)
Higher amount = more aggressive quantisation.