Spectral Effects Suite — User Guide

Six character processors built from frozen-source sample-index rate transforms, differencing, amplitude envelopes and wet/dry mixing; the historical “Spectral” name is retained although the core DSP is time-index based.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 1.3.3 (2026) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

Spectral Effects Suite is a collection of six character processors built from time-index resampling/differencing, amplitude envelopes and wet/dry mixing. The historical suite name is retained for continuity, but the core DSP does not edit FFT or spectrogram bins.

Terminology: “Spectral” is a legacy name here. The central formulas read the frozen source at alternative sample indices such as n/a(t) and n×b(t), subtract or average those reads, then shape the result with an amplitude envelope.

What is a dual-rate sample-index transform?

The processor freezes the pre-effect waveform and then reads it along two or more index trajectories. A simplified dual-rate branch is:

y[n] = x[n / a(t)] − x[n × b(t)]

When a and b differ from 1, the two reads move through the same source at different effective index rates. Their difference creates cancellation, reinforcement, pitch-like shifts, smearing and time-warp character without using a conventional delay line or spectral transform. Wobble modes vary the factors continuously over the file; the constant dual-rate modes use fixed factors.

Quick start

  1. Select one Sound and run Spectral_Effects_Suite.praat.
  2. Choose one of the six effects and start with Moderate.
  3. Leave Envelope mode = Effect default until you understand the transform itself.
  4. Use Wet_dry_percent for auditioning: 0% is a true dry bypass.
  5. Use Preserve original channels unless you intentionally want the older mono-core + pseudo-stereo character.

Six effects

EffectIndex transformDefault envelope
WobbleTwo continuously varying index-rate branches using Shift_base ± Shift_depth.Tremolo with Decay
Wobbling ShiftSame dual-rate wobble, but the entered/preset Shift_depth is reduced to 30% before processing.Turbulent Decay (Gaussian)
Dual-Rate DecayConstant difference x[n/base] − x[n×base]; base forced to 1.1.Exponential Decay
UnderwaterAverage of three slower-rate reads minus one faster branch; Strong/Extreme set base to 1.15.Random Bubbling
Dual-Rate CrescendoConstant dual-rate difference; base forced to 1.1.Exponential Crescendo
Pulsing Dual-RateConstant dual-rate difference; base forced to 1.2.Rhythmic Pulsing (abs sin)

Presets

PresetShift depthModulation depthEnvelope strengthPhase spans
CustomForm valueForm valueForm valueForm values
Subtle0.10.25unchanged
Moderate0.30.510unchanged
Strong0.50.715unchanged
Extreme0.70.925Shift 80 rad; Modulation 40 rad
Presets are applied before effect-specific rules. For example, Wobbling Shift subsequently multiplies Shift_depth by 0.3, while several constant-rate effects replace Shift_base.

Envelope system

With Effect default, the selected effect chooses its envelope automatically. With Custom envelope, the Envelope_type menu is respected directly. The envelope is created as a real Sound object, and that exact realization is used both for DSP and visualization.

EnvelopeFormula / characterRandom?
Exponential Decaystrength^(−t/T)No
Exponential Crescendostrength^(t/T−1)No
Tremolo with DecayExponential decay × sinusoidal modulation around Modulation_centerNo
Random BubblingExponential decay × uniform random modulationYes, unseeded
Turbulent DecayExponential decay × Gaussian random modulationYes, unseeded
Rhythmic Pulsing|sin(phase)| × exponential decayNo

Controls

ControlDefaultMeaning
Shift_base1.1Central index-rate factor. Some effects override it.
Shift_depth0.3Wobble excursion around Shift_base. For wobble effects it is safety-limited to 95% of the base if necessary.
Shift_phase_span50 radTotal sinusoidal phase traversed across the entire file; radians = one full cycle.
Envelope_strength10Base of the exponential envelope law; larger values create stronger shaping.
Modulation_center / depth1.0 / 0.5DC center and excursion of tremolo/random modulation.
Modulation_phase_span20 radTotal modulation phase traversed across the file.
Wet_dry_percent1000 = exact dry bypass; 100 = full wet.
Stereo_modePreserve original channelsNormal multichannel-safe path or explicit legacy mono/pseudo-stereo path.
Normalize_outputOnTarget-normalizes processed output to Scale_peak; skipped entirely by the 0% wet bypass.
Scale_peak0.99Target peak used only when Normalize_output is enabled.

Channels, duration and bypass

Output name: <source>_<effect>_<preset>_v1.3.3.

Processing pipeline

  1. Apply the preset, then the effect-specific overrides.
  2. If Wet = 0, copy the source and stop the DSP path.
  3. Otherwise create the processing source and dry reference, preserving channels or explicitly entering the legacy mono path.
  4. Freeze a copy of the pre-effect waveform so all alternative-index reads come from unchanged source samples rather than recursively modified output.
  5. Apply the selected dual-rate or multi-rate sample-index transform.
  6. Create the exact envelope Sound and multiply the transformed signal by it.
  7. Blend dry and wet with matched channel structure.
  8. Optionally create the legacy 12 ms pseudo-stereo output.
  9. Optionally target-normalize to Scale_peak.

Visualization