Stepped Notch Filter — User Guide

Static whole-file FFT spectral sculpting with one or two hard rectangular gain regions, optional wet-only mono-to-stereo offset, and measured transfer-function QC.

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

What this does

Stepped Notch Filter is a whole-file FFT-domain stepped spectral attenuator. It defines one or two rectangular frequency regions, multiplies bins inside those regions by fixed gains, and applies a separate gain outside the regions. Because the same positive multiplier is applied to the complete complex bin, phase is preserved while magnitude is stepped.

Despite the name, this is more general than a single narrow “notch”: custom settings can create broad dips, pass-band emphasis through a reduced outside gain, telephone-style band restriction, or two independent rectangular regions.

What is a notch filter? In filter terminology, a notch is a band of frequencies that is strongly attenuated relative to frequencies around it. Conventional notch filters are often narrow IIR/FIR filters. This tool instead applies hard rectangular gains to one global FFT, so the edges are intentionally abrupt and can produce time-domain ringing.
Static De-Esser is only a preset name. The script does not detect sibilance or change gain dynamically. It simply reduces the fixed 5–8 kHz region for the entire file.

Quick start

  1. Select exactly one mono or stereo Sound.
  2. Run Stepped_Notch_Filter.praat.
  3. Start with Vocal Presence Dip, Static De-Esser, Hollow Middle or Telephone Band.
  4. For Custom, define up to two frequency regions and their linear gains.
  5. Set outside_gain for all frequencies not inside an active band.
  6. If custom bands overlap, the overlap automatically uses the lower gain (stronger attenuation).

Presets

Presets replace the band definitions and outside gain. Wet/Dry, stereo output, scale peak and output switches remain user-controlled.

PresetBand 1Band 2Outside
Custom2000–2200 Hz ×0.15500–5800 Hz ×0.2×1.0
Vocal Presence Dip2000–4000 Hz ×0.3Inactive×1.0
Static De-Esser5000–8000 Hz ×0.4Inactive×1.0
Hollow Middle400–2000 Hz ×0.2Inactive×1.0
Telephone Band0–300 Hz ×0.13400 Hz–Nyquist ×0.1×1.0
Telephone Band: the 300–3400 Hz region corresponds to the conventional narrow telephone band used in ITU-T telephony specifications. This preset does not emulate coding, handset response, line noise or transmission distortion; it only creates a static spectral approximation by attenuating frequencies outside that band.

Controls

ControlDefaultMeaning
band1_low / band1_high2000 / 2200 HzFirst rectangular frequency region. Reversed limits are automatically swapped and both edges are clamped to Nyquist.
band1_gain0.1Linear multiplier inside Band 1. Zero is allowed; values above 1 amplify.
band2_low / band2_high5500 / 5800 HzSecond rectangular frequency region; a zero-width region is inactive.
band2_gain0.2Linear multiplier inside Band 2.
outside_gain1.0Linear multiplier outside active bands.
wet_dry_percent100%Blend between requested dry-format path and processed spectrum.
stereo_outputOnPreserves stereo sources; creates stereo from mono; when off, stereo source is intentionally folded to mono before processing.
scale_peak0.90When Wet > 0, final mix is target-normalized to this peak.
draw_visualizationOnDraws the actual stepped transfer law, spectra, waveforms and measured-gain QC.
play_after_processingOnPlays the final output.

Processing pipeline

  1. Validate mono/stereo input and normalize custom band order.
  2. Clamp band edges to 0…Nyquist. A band is active only when its high edge is greater than its low edge.
  3. Build the exact stepped gain law. In an overlap, use min(band1_gain, band2_gain).
  4. Prepare the requested output format: preserve stereo, create stereo from mono, or fold stereo to mono.
  5. Compute a whole-file Spectrum for each processing channel and multiply complete complex bins by the gain law.
  6. Inverse-transform and trim to the original duration.
  7. For mono input with stereo output, delay only the wet right channel by 12 ms.
  8. Mix dry and wet. If Wet > 0, target-normalize to scale_peak.

Channels, bypass, duration and level

Visualization

The visualization is built around the actual stepped transfer law and measured processing path. Source and wet spectra share one scale, source/final waveforms share one amplitude scale, and the display includes target-versus-measured gain QC for the active regions. For preserved stereo, the stronger-RMS source channel is used as the representative channel.

Technological context

The preset Telephone Band reflects the conventional narrowband telephone range. ITU-T Recommendation P.310 explicitly describes “telephone-band (300–3400 Hz) digital telephones.” The preset leaves that middle band at ×1 and attenuates frequencies below 300 Hz and above 3400 Hz to ×0.1.

This should be understood as a spectral coloration, not a telephone-system simulation. Real telephony also involves codec bandwidth, handset/acoustic response, noise, nonlinear distortion, sidetone and other transmission characteristics that are outside this script.

Further reading

ITU-T P.310, Transmission characteristics for telephone-band (300–3400 Hz) digital telephones.