Amplitude-Following Wah-Wah — User Guide

Dynamic filter effect that automatically follows audio amplitude: creates expressive wah-wah and filter modulation effects where the filter frequency tracks the loudness of your audio in real-time.

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

What this does

This script implements an amplitude-following wah-wah effect that dynamically adjusts a band-pass filter's center frequency based on the audio's instantaneous amplitude. Unlike traditional wah-wah pedals that require manual control, this automated version analyzes the audio's loudness envelope and maps it to filter frequency changes, creating expressive filter sweeps that naturally follow the dynamics of your performance.

Key Features:

What is amplitude-following wah? Traditional wah-wah: manual foot pedal controls filter frequency. Amplitude-following wah: audio's own loudness controls filter frequency automatically. The effect creates dynamic filter sweeps that respond to performance intensity: louder passages → higher filter frequencies, quieter passages → lower filter frequencies. Technical implementation: (1) Amplitude analysis: Extract intensity envelope from audio, (2) Frequency mapping: Convert amplitude values to filter frequencies, (3) Dynamic filtering: Apply time-varying band-pass filter. Advantages: (1) Performance-driven: Effect responds to playing dynamics, (2) Hands-free: No manual control needed, (3) Expressive: Creates natural, musical filter movements, (4) Consistent: Same performance = same filter behavior every time. Use cases: Guitar/bass processing, vocal effects, synth filtering, sound design, experimental music.

Technical Implementation: (1) Amplitude Analysis: Convert sound to Intensity object with 100Hz minimum frequency for adequate time resolution. (2) Envelope Extraction: Analyze intensity values across all time frames, calculate minimum/maximum for normalization. (3) Frequency Mapping: For each time point: normalize amplitude (0-1), map to frequency range (min_cutoff to max_cutoff), set constant bandwidth. (4) Filter Application: Create FormantGrid with dynamic formant points, apply band-pass filter to original sound. (5) Output: Rename processed sound, play result, clean up intermediate objects. Key insight: The wah effect emerges from the correlation between amplitude and filter frequency — loud moments get bright, filtered tones while quiet moments get dark, muted tones.

Quick start

  1. In Praat, select exactly one Sound object.
  2. Run script…amplitude_following_wah.praat.
  3. Choose a Preset Style:
    • Classic Guitar – Mid-range, sharp wah for guitar
    • Funky Bass – Low-range, thumpy wah for bass
    • Subtle Vocal – Wide, gentle wah for vocals
    • Sci-Fi Zap – Extreme range, very sharp effects
    • Custom – Manual parameter control
  4. If selecting Custom, adjust parameters:
    • Custom_Min_Hz – Minimum filter frequency
    • Custom_Max_Hz – Maximum filter frequency
    • Custom_Bandwidth_Hz – Filter bandwidth
  5. Click OK – processing begins automatically.
  6. The script:
    • Analyzes amplitude envelope
    • Creates dynamic filter sweeps
    • Applies wah-wah effect
    • Plays result immediately
    • Creates "originalname_wah_presetname" object
Quick tip: Start with Classic Guitar for most instrumental sources or Subtle Vocal for voice processing. Use dynamic source material with varying loudness levels — the effect works best when amplitude changes significantly. For subtle effects, use smaller frequency ranges (500-1500Hz). For dramatic effects, use wider ranges (200-4000Hz). The effect is most audible on sustained tones and notes with clear attacks — very consistent amplitude material may produce less noticeable results.
Important: AMPLITUDE DEPENDENCE — the effect requires audio with dynamic amplitude variations. Very consistent loudness levels will produce minimal filter movement. Extreme settings can create unnatural or harsh results — always preview with the play function. Processing time depends on audio length — longer files take more time for amplitude analysis. The effect works best on monophonic material — complex polyphonic sources may produce unpredictable filter behavior. Very quiet sources may not trigger the full frequency range — ensure your audio has adequate dynamic range.

Wah Presets

Preset Overview

Four professionally tuned presets provide instant access to classic wah-wah sounds and creative filter effects:

Preset Name Frequency Range Bandwidth Character Best For
Classic Guitar 400-2500 Hz 100 Hz Mid-range, sharp Electric guitar, lead instruments
Funky Bass 80-800 Hz 80 Hz Low-range, thumpy Bass guitar, low instruments
Subtle Vocal 500-1500 Hz 300 Hz Wide, gentle Vocals, acoustic instruments
Sci-Fi Zap 200-4000 Hz 50 Hz Extreme, sharp Sound design, special effects
Custom User defined User defined Full control Experimental/advanced use

🎸 Classic Guitar (Mid-range, sharp)

Use case: Traditional wah-wah effect for electric guitar and lead instruments

  • Frequency range: 400-2500 Hz (vocal formant range)
  • Bandwidth: 100 Hz (sharp, resonant filter)
  • Filter character: Pronounced mid-range emphasis

Result: Classic crybaby-style wah with strong mid-range presence and clear filter sweeps. Perfect for funk, rock, and blues guitar applications.

🎶 Funky Bass (Low-range, thumpy)

Use case: Bass guitar wah and low-frequency filter effects

  • Frequency range: 80-800 Hz (bass frequency focus)
  • Bandwidth: 80 Hz (tight, focused filter)
  • Filter character: Deep, thumping filter sweeps

Result: Powerful bass wah effect that preserves low-end punch while adding expressive filter movement. Ideal for funk basslines and electronic bass processing.

🎤 Subtle Vocal (Wide, gentle)

Use case: Gentle filter effects for vocals and acoustic instruments

  • Frequency range: 500-1500 Hz (speech intelligibility range)
  • Bandwidth: 300 Hz (wide, gentle filter)
  • Filter character: Smooth, musical sweeps

Result: Subtle vocal filter effect that adds movement without overwhelming the source. Maintains vocal intelligibility while adding expressive filter character.

🚀 Sci-Fi Zap (Extreme range, very sharp)

Use case: Dramatic filter effects for sound design and special effects

  • Frequency range: 200-4000 Hz (full spectrum sweep)
  • Bandwidth: 50 Hz (very sharp, narrow filter)
  • Filter character: Extreme, resonant sweeps

Result: Intense filter effects with dramatic frequency sweeps and strong resonance. Perfect for sci-fi sounds, laser effects, and experimental music.

Preset Selection Guide

Choosing the right preset:
  • For guitar/lead instruments: Classic Guitar
  • For bass/low instruments: Funky Bass
  • For vocals/acoustic instruments: Subtle Vocal
  • For sound design/effects: Sci-Fi Zap
  • For experimental processing: Custom with extreme settings

Pro tip: If you're unsure, start with Classic Guitar — it works well with most instrumental sources and provides a good balance of effect audibility and musicality.

Technical Theory

Amplitude-Following Concept

🎚️ Dynamic Envelope Tracking

Core principle: Filter frequency = f(amplitude)

Musical result: Performance dynamics control filter sweeps

Technical implementation: Real-time amplitude-to-frequency mapping

Creative potential: Expressive, performance-driven filter effects

Amplitude Analysis

Intensity extraction process:

// Convert sound to intensity envelope id_int = To Intensity: 100, 0, "yes" // Calculate dynamic range min_int = Get minimum: 0, 0, "Parabolic" max_int = Get maximum: 0, 0, "Parabolic" range_int = max_int - min_int // Normalize amplitude values FOR each frame i in intensity object: t = Get time from frame number: i val = Get value in frame: i norm_val = (val - min_int) / range_int norm_val = max(0, norm_val) // Clamp to 0-1 range

Filter Mathematics

Band-Pass Filter Properties

FormantGrid filter characteristics:

Band-pass filter parameters: Center frequency (F1): Dynamic, follows amplitude Bandwidth (B1): Fixed, determines filter sharpness Filter shape: Resonant peak around center frequency Frequency response: |H(f)| ≈ 1 / √[1 + ( (f - F1) / (B1/2) )²ⁿ ] Where typically n = 1 for simple band-pass This creates a peak at F1 with -3dB points at F1 ± B1/2 Quality factor: Q = F1 / B1 Higher Q = sharper, more resonant filter Lower Q = wider, gentler filter

Dynamic Frequency Mapping

Amplitude to frequency conversion:

Linear mapping: target_freq = min_cutoff + ((max_cutoff - min_cutoff) × norm_val) Where: min_cutoff = minimum filter frequency (quiet moments) max_cutoff = maximum filter frequency (loud moments) norm_val = normalized amplitude (0.0 to 1.0) Example (Classic Guitar preset): min_cutoff = 400 Hz, max_cutoff = 2500 Hz Quiet (norm_val=0.0) → 400 Hz (dark, muted) Medium (norm_val=0.5) → 1450 Hz (mid-range) Loud (norm_val=1.0) → 2500 Hz (bright, sharp) Bandwidth remains constant: bw = preset bandwidth (e.g., 100 Hz for Classic Guitar)

Complete Processing Algorithm

Step-by-Step Implementation

STEP 1: PRESET SELECTION IF preset ≠ "Custom": Apply preset min_cutoff, max_cutoff, bw values ELSE: Use custom parameter values STEP 2: AMPLITUDE ANALYSIS Select input Sound id_int = To Intensity: 100, 0, "yes" Calculate min_int, max_int, range_int STEP 3: FORMANTGRID CREATION id_grid = Create FormantGrid: name + "_filter", 0, dur, 10, 550, 600, 50, 50 STEP 4: DYNAMIC MAPPING FOR each intensity frame i: t = Get time from frame: i val = Get value in frame: i norm_val = (val - min_int) / range_int target_freq = min_cutoff + (max_cutoff - min_cutoff) × norm_val Add formant point: 1, t, target_freq Add bandwidth point: 1, t, bw STEP 5: FILTER APPLICATION Select input Sound + FormantGrid id_wah = Filter STEP 6: CLEANUP & OUTPUT Remove intermediate objects Rename output: name + "_wah_" + preset Play result

Psychoacoustic Considerations

Perception of Wah Effects

How we hear wah-wah effects:

Frequency Range Perception:
200-500 Hz: "Dark" wah, muted character
500-1500 Hz: "Mid" wah, vocal-like quality
1500-3000 Hz: "Bright" wah, sharp presence
3000+ Hz: "Thin" wah, nasal character

Bandwidth Perception:
< 50 Hz: Very sharp, strong resonance
50-150 Hz: Sharp, pronounced wah
150-300 Hz: Moderate, musical wah
> 300 Hz: Gentle, subtle filtering

Speed Perception:
Fast sweeps: Rhythmic, obvious effect
Slow sweeps: Expressive, subtle effect
The speed depends on amplitude change rate in source

Parameters

Custom Parameters

Parameter Type Range Default Description
Custom_Min_Hz positive 50-2000 Hz 400 Hz Filter frequency at minimum amplitude
Custom_Max_Hz positive 500-5000 Hz 2500 Hz Filter frequency at maximum amplitude
Custom_Bandwidth_Hz positive 20-500 Hz 150 Hz Width of band-pass filter

Parameter Effects Guide

Min_Hz Effects (50-2000 Hz):
50-200 Hz: Very dark baseline, bass emphasis
200-500 Hz: Warm baseline, guitar-friendly
500-1000 Hz: Mid-range baseline, vocal-friendly
1000-2000 Hz: Bright baseline, special effects

Max_Hz Effects (500-5000 Hz):
500-1500 Hz: Subtle range, gentle sweeps
1500-3000 Hz: Moderate range, classic wah
3000-5000 Hz: Extreme range, dramatic effects
>4000 Hz: Potentially harsh, use carefully

Bandwidth_Hz Effects (20-500 Hz):
20-50 Hz: Very sharp, strong resonance
50-150 Hz: Sharp, pronounced filtering
150-300 Hz: Moderate, musical filtering
300-500 Hz: Gentle, subtle tone shaping

Parameter Combinations

Creating Specific Wah Characters

Recommended parameter sets for common effects:

Traditional Crybaby Wah:
Min_Hz: 400, Max_Hz: 2000, Bandwidth: 80
Character: Classic guitar wah with strong mid-range

Bass Wah:
Min_Hz: 100, Max_Hz: 800, Bandwidth: 60
Character: Deep, thumping bass filter

Vocal Filter:
Min_Hz: 500, Max_Hz: 1500, Bandwidth: 200
Character: Gentle, speech-friendly filtering

Extreme FX Wah:
Min_Hz: 200, Max_Hz: 4000, Bandwidth: 40
Character: Dramatic, resonant special effects

Subtle Tone Shaper:
Min_Hz: 800, Max_Hz: 1800, Bandwidth: 300
Character: Gentle, almost imperceptible movement

Applications

Instrument Processing

Use case: Adding expressive filter effects to musical instruments

Technique: Match preset to instrument frequency range

Examples: Guitar wah, bass filter, synth sweeps, horn processing

Vocal Effects

Use case: Creating dynamic vocal filters and talk-box effects

Technique: Use Subtle Vocal preset or custom 500-1500Hz range

Results: Expressive vocal filtering, pseudo-talk-box, robotic vocals

Sound Design

Use case: Generating movement and expression in synthetic sounds

Technique: Extreme settings with Sci-Fi Zap or wide custom ranges

Applications: Laser sounds, robot voices, alien effects, evolving pads

Rhythmic Enhancement

Use case: Adding filter movement to rhythmic material

Technique: Process drums or percussive loops with moderate settings

Results: Dynamic drum processing, filter-house effects, rhythmic sweeps

Practical Workflow Examples

🎸 Guitar Wah Processing

Goal: Add classic wah-wah to electric guitar recording

Settings:

  • Preset: Classic Guitar
  • Source: Electric guitar recording
  • Performance: Dynamic playing with volume variations

Result: Expressive wah-wah that follows picking dynamics and volume swells. Creates authentic crybaby-style effects automatically.

🎤 Vocal Talk-Box Effect

Goal: Create talk-box-like filter effects on vocals

Settings:

  • Preset: Subtle Vocal or Custom 600-1200Hz
  • Source: Clear vocal recording with good dynamics
  • Performance: Articulate singing with consonant emphasis

Result: Vocal filter that emphasizes consonants and follows vocal dynamics, creating synthetic talk-box character.

🚀 Sci-Fi Sound Design

Goal: Create dramatic filter effects for sci-fi sounds

Settings:

  • Preset: Sci-Fi Zap
  • Source: Synthetic sounds, noise, or simple waveforms
  • Performance: Source with strong amplitude variations

Result: Extreme filter sweeps with strong resonance, perfect for laser zaps, robot voices, and alien communication effects.

Advanced Techniques

Creative processing approaches:
  • Pre-processing: Add compression to source for more consistent wah effect
  • Post-processing: Add reverb/delay after wah for spatial effects
  • Layered processing: Process different frequency bands separately
  • Extreme settings: Use very narrow bandwidth for strong resonance effects

Experiment with source material that has unusual amplitude characteristics for unique results

Source material tips:
  • Best sources: Dynamic performances, instruments with clear attacks, vocal consonants
  • Good sources: Sustained tones with volume swells, rhythmic material
  • Challenging sources: Consistent amplitude material, very dense mixes
  • Experimental sources: Noise, granular textures, field recordings

Troubleshooting Common Issues

Problem: No filter movement
Cause: Source has consistent amplitude, range too narrow
Solution: Use more dynamic source, widen frequency range, add compression to source
Problem: Effect too extreme/harsh
Cause: Range too wide, bandwidth too narrow, extreme settings
Solution: Use smaller frequency range, increase bandwidth, try gentler presets
Problem: Unnatural filter jumps
Cause: Source has abrupt amplitude changes
Solution: Use source with smoother dynamics, wider bandwidth, or pre-smooth amplitude
Problem: Loss of low/high frequencies
Cause: Filter range excludes important frequency content
Solution: Adjust min/max Hz to preserve desired frequency content