Stereo Phaser Effect — User Guide

Analog-style phasing with stereo enhancement: creates sweeping notches in frequency spectrum using modulated all-pass filters, with stereo phase offset for immersive spatial effects.

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

What this does

This script implements a stereo phaser effect — recreating the classic analog phaser sound with enhanced stereo imaging. The effect works by creating a series of frequency notches that sweep up and down the spectrum, caused by phase cancellation between the original signal and a phase-shifted version. Stereo enhancement is achieved by applying different phase offsets to left and right channels, creating a swirling, immersive spatial effect.

Key Features:

What is phasing? Phasing is an audio effect that creates a sweeping, whooshing sound by combining a signal with a phase-shifted version of itself. The phase shift varies over time (modulated by an LFO), causing constructive and destructive interference at different frequencies. This creates "notches" in the frequency spectrum that move up and down. Stereo phasing applies different phase modulation to left and right channels, creating a swirling, three-dimensional effect. Historically used in 1970s guitar effects (e.g., Uni-Vibe, Phase 90), now common in electronic music, vocals, and sound design.

Technical Implementation: (1) Stereo handling: If input is mono, automatically converts to stereo. (2) Feedback/resonance stage: Creates sharper notches by adding self-modulated delayed signal. (3) Main phaser stage: Combines dry signal with phase-shifted version using time-varying delay modulation. (4) Stereo phase offset: Left and right channels use different LFO phases (offset by stereo_Phase_Offset_deg). (5) Dry/wet mixing: Blends original and processed signals according to mix parameter. Core formula: output = (1-mix)×dry + mix×dry[delay], where delay = base_delay + modulation×sin(2π×rate×time + channel_phase_offset).

Quick start

  1. In Praat, select exactly one Sound object (mono or stereo).
  2. Run script…stereo_phaser_effect.praat.
  3. Choose a Preset or select "Custom" to adjust parameters manually.
  4. Adjust LFO Settings to control the sweep motion:
    • Rate_hz: Speed of the sweep (0.1-10 Hz)
    • Depth_ms: Intensity of the modulation (0.5-5 ms)
    • Center_delay_ms: Base delay time (1-10 ms)
  5. Set Stereo_Phase_Offset_deg (180° = maximum width, 0° = mono).
  6. Adjust Feedback_Resonance (0.0-0.9) for sharper notches.
  7. Set Dry_Wet_Mix (0.0-1.0) to blend effect with original.
  8. Click OK — phaser applied, result named "originalname_phaser".
Quick tip: Start with Classic 70s Phaser preset for traditional sound. Use Slow & Deep for subtle, evolving textures. Try Jet Plane for high-resonance dramatic effects. Stereo_Phase_Offset_deg = 180 creates maximum width with channels sweeping in opposite directions. Lower Dry_Wet_Mix values (0.3-0.5) work well for subtle enhancement, higher values (0.6-0.8) for dramatic effects. Mono inputs automatically convert to stereo to enable width effects.
Important: High Feedback_Resonance values (>0.7) can cause excessive ringing or instability. Very high Rate_hz values (>5 Hz) may create unnatural fluttering. Extreme Depth_ms settings can cause audible pitch modulation. The effect works best on harmonic content (vocals, guitars, synths) — may be less noticeable on noise or percussive sounds. Output normalization (scale_peak) prevents clipping but may reduce overall level — adjust in your DAW if needed.

Phaser Theory

How Phasing Works

The Phase Cancellation Principle

Basic phaser operation:

Original signal: dry(t) Phase-shifted signal: wet(t) = dry(t - δ(t)) Where δ(t) = base_delay + modulation × sin(2π × rate × t) Output mix: result(t) = (1 - mix) × dry(t) + mix × wet(t) When dry and wet signals combine, they interfere: Constructive interference → frequency boost Destructive interference → frequency notch The moving delay δ(t) causes notches to sweep up/down frequency spectrum

Frequency Notch Creation

Notch frequencies occur where:

Phase difference = 180° (π radians) This happens when delay = (2n+1) / (2f) Where: n = integer (0,1,2,...) f = frequency So for delay δ, notch frequencies are: f_notch = (2n+1) / (2δ) As δ changes over time, f_notch sweeps up/down
Phaser Frequency Response
    Amplitude
       ▲
       │    ┌───┐
       │    │   │
       │   ┌┘   └┐
       │   │     │
       │  ┌┘     └┐
       │  │       │    ┌───┐
       │ ┌┘       └┐   │   │
       │ │         │  ┌┘   └┐
       └─┴─────────┴──┴─────┴───► Frequency
        Notch 1  Notch 2  Notch 3
    

Multiple notches created by phase cancellation

Stereo Enhancement

Phase Offset Between Channels

Stereo phaser formula:

Left channel: δ_L(t) = base_delay + modulation × sin(2π × rate × t + 0) Right channel: δ_R(t) = base_delay + modulation × sin(2π × rate × t + φ) Where φ = stereo_phase_offset (radians) Result: Notches sweep at different times in left/right channels Creates swirling, spacious effect

Phase Offset Values

Stereo_Phase_Offset_deg effects:

0°: Mono phasing - identical in both channels
90°: Channels 1/4 cycle apart - gentle stereo motion
180°: Channels in opposite phase - maximum width, "counter-sweep"
270°: Similar to 90° but inverted relationship
Custom values: Experiment for unique spatial effects

Psychoacoustic result: Brain perceives notches moving around listener

Feedback Resonance

Sharpening the Notches

Resonance feedback stage:

With resonance > 0: signal = original + resonance × delayed_signal Where delayed_signal = signal[t - δ(t)] This creates a recursive filter that emphasizes frequencies near the notches Result: Sharper, more pronounced notch filtering Higher resonance → more emphasis → more "ringing" at notch frequencies

Resonance Characteristics

Feedback_Resonance behavior:

0.0: No resonance - gentle, subtle notches
0.3: Mild resonance - noticeable notch emphasis
0.6: Medium resonance - pronounced "swoosh" effect
0.8: High resonance - dramatic, resonant sweeps
0.9+: Extreme resonance - potential instability/ringing

Musical use: Lower values for subtle enhancement, higher for dramatic effects

Parameter Relationships

LFO Rate and Depth Interaction

Rate_hz (sweep speed):

Rate_hz = cycles per second Typical ranges: 0.1 - 0.5 Hz: Very slow, evolving sweeps (pad-like) 0.5 - 2.0 Hz: Medium, musical sweeps (common) 2.0 - 5.0 Hz: Fast, obvious sweeps (dramatic) 5.0 - 10.0 Hz: Very fast, fluttering (special effect) Lower rates = smoother, more gradual changes Higher rates = more obvious, rhythmic modulation

Depth_ms (modulation intensity):

Depth_ms = peak modulation amount Typical ranges: 0.5 - 1.5 ms: Subtle modulation 1.5 - 3.0 ms: Medium modulation (classic phaser) 3.0 - 5.0 ms: Deep modulation (dramatic sweeps) Larger depth = wider frequency range covered by sweeps Very large depth may cause pitch modulation artifacts

Center_delay_ms (base delay):

Center_delay_ms = center point of modulation Determines center frequency of sweep range: f_center ≈ 1 / (2 × center_delay_ms) Typical ranges: 1.0 - 2.0 ms: Higher frequency sweeps (bright) 2.0 - 4.0 ms: Medium frequency sweeps (vocal range) 4.0 - 8.0 ms: Lower frequency sweeps (warm) Adjust to target specific frequency ranges

Complete Processing Pipeline

SETUP: Select Sound object Choose preset or custom parameters Convert mono to stereo if needed PARAMETER CALCULATION: base_samp = center_delay_ms × fs / 1000 mod_samp = depth_ms × fs / 1000 phase_rad = stereo_Phase_Offset_deg × π / 180 PROCESSING STAGES: STAGE 1: Feedback/Resonance (if resonance > 0) For each channel: signal = original + resonance × delayed_signal where delayed_signal = signal[t - (base_samp + mod_samp×sin(ωt+φ))] STAGE 2: Main Phaser Mix For left channel (row 1): output = (1-mix) × dry + mix × dry[t - (base_samp + mod_samp×sin(ωt))] For right channel (row 2): output = (1-mix) × dry + mix × dry[t - (base_samp + mod_samp×sin(ωt+phase_rad))] FINALIZATION: Normalize peak to scale_peak Optional: Play result Display processing summary OUTPUT: "originalname_phaser" with stereo phaser effect

Effect Presets

Classic 70s Phaser

🎸 Vintage Guitar Tone

Settings: Rate: 0.6 Hz, Depth: 1.5 ms, Center: 2.5 ms, Phase: 90°, Resonance: 0.4, Mix: 0.5

Character: Smooth, musical sweeps reminiscent of 1970s analog phasers

Best for: Electric guitar, Rhodes piano, vintage synth sounds

Slow & Deep

🌊 Evolving Textures

Settings: Rate: 0.2 Hz, Depth: 3.5 ms, Center: 4.0 ms, Phase: 180°, Resonance: 0.5, Mix: 0.6

Character: Very slow, deep sweeps with wide stereo image

Best for: Pads, ambient textures, background elements

Jet Plane (High Resonance)

✈️ Dramatic Whooshing

Settings: Rate: 0.15 Hz, Depth: 2.0 ms, Center: 1.5 ms, Phase: 0°, Resonance: 0.85, Mix: 0.5

Character: High resonance creates pronounced, dramatic sweeps

Best for: Sound effects, dramatic transitions, lead sounds

Fast Wobble

🌀 Rhythmic Modulation

Settings: Rate: 4.0 Hz, Depth: 1.0 ms, Center: 2.0 ms, Phase: 180°, Resonance: 0.3, Mix: 0.4

Character: Fast, obvious modulation with subtle stereo width

Best for: Adding movement to static sounds, rhythmic effects

Wide Stereo Widener

🔊 Subtle Enhancement

Settings: Rate: 0.1 Hz, Depth: 0.8 ms, Center: 5.0 ms, Phase: 180°, Resonance: 0.0, Mix: 0.3

Character: Very subtle phasing primarily for stereo enhancement

Best for: Adding width to mono sources, subtle spatial movement

Sci-Fi Raygun

👽 Futuristic Effects

Settings: Rate: 2.5 Hz, Depth: 4.0 ms, Center: 1.0 ms, Phase: 180°, Resonance: 0.9, Mix: 0.5

Character: Extreme settings for sci-fi and special effects

Best for: Sound design, special effects, experimental music

PresetRate (Hz)Depth (ms)Center (ms)Phase (°)ResonanceMixUse Case
Classic 70s0.61.52.5900.40.5Vintage instruments
Slow & Deep0.23.54.01800.50.6Pads, ambient
Jet Plane0.152.01.500.850.5Dramatic effects
Fast Wobble4.01.02.01800.30.4Rhythmic movement
Stereo Widener0.10.85.01800.00.3Subtle enhancement
Sci-Fi Raygun2.54.01.01800.90.5Sound design

Parameters

LFO Settings (The Sweep)

ParameterTypeRangeDefaultDescription
Rate_hzpositive0.1-10.00.5Sweep speed in cycles per second
Depth_mspositive0.5-5.02.0Modulation intensity in milliseconds
Center_delay_mspositive1.0-10.03.0Base delay time in milliseconds

Stereo Image

ParameterTypeRangeDefaultDescription
Stereo_Phase_Offset_degpositive0-360180Phase difference between channels in degrees

Intensity

ParameterTypeRangeDefaultDescription
Feedback_Resonancepositive0.0-0.90.6Sharpness of notch filtering
Dry_Wet_Mixpositive0.0-1.00.5Blend between dry and wet signals

Output

ParameterTypeRangeDefaultDescription
Scale_peakpositive0.1-1.00.99Output normalization level
Play_after_processingbooleanyes/noyesAuto-play processed sound

Applications

Guitar Effects

Use case: Classic phaser tones for electric guitar

Technique: Use "Classic 70s Phaser" preset with medium mix (0.4-0.6)

Tips:

Vocal Processing

Use case: Adding movement and space to vocals

Technique: Use subtle settings with low mix

Settings:

Result: Adds subtle movement without obvious "effected" sound

Synth and Pad Textures

Use case: Creating evolving, animated synth sounds

Technique: Use "Slow & Deep" preset or similar

Settings:

Stereo Enhancement

Use case: Adding width to mono sources

Technique: Use "Wide Stereo Widener" preset

Key principles:

Result: Mono sources gain stereo width without obvious phasing

Sound Design and Special Effects

Use case: Creating sci-fi, futuristic, or unusual sounds

Technique: Use extreme settings from "Jet Plane" or "Sci-Fi Raygun" presets

Creative approaches:

Practical Workflow Examples

🎸 Guitar Lead Enhancement

Goal: Add vintage phaser character to guitar solo

Settings:

  • Preset: Classic 70s Phaser
  • Adjust rate to match song tempo (0.5-1.0 Hz)
  • Mix: 0.4-0.6 (balanced)
  • Stereo phase: 90-180°

Result: Classic phaser tone with stereo width

🎤 Vocal Dimension

Goal: Subtle movement on background vocals

Settings:

  • Rate: 0.4 Hz
  • Depth: 1.2 ms
  • Center: 3.0 ms
  • Resonance: 0.2
  • Mix: 0.3
  • Stereo phase: 180°

Result: Background vocals gain subtle movement and space

🎹 Synth Pad Animation

Goal: Create evolving pad texture

Settings:

  • Preset: Slow & Deep
  • Rate: 0.15 Hz (very slow)
  • Depth: 3.0 ms
  • Mix: 0.7
  • Resonance: 0.4

Result: Slowly evolving pad with noticeable sweeps

Advanced Techniques

LFO rate musical timing:

Set rate to match song tempo for rhythmic phasing:

Rate_hz = BPM / 60 (one sweep per beat) Rate_hz = BPM / 120 (one sweep every two beats) Rate_hz = BPM / 240 (one sweep every four beats) Example: 120 BPM song Rate = 2.0 Hz → one sweep per beat Rate = 1.0 Hz → one sweep every two beats Rate = 0.5 Hz → one sweep every four beats
Layering multiple phasers:
  • Apply different phaser settings to same sound
  • Use different rate ratios (e.g., 1:2 or 2:3)
  • Creates complex, evolving modulation patterns
  • Example: Slow deep phaser + fast subtle phaser

Troubleshooting Common Issues

Problem: Effect too subtle or inaudible
Cause: Low mix, low depth, or inappropriate source material
Solution: Increase mix and depth, try on harmonic content
Problem: Unwanted fluttering or distortion
Cause: Rate too high, depth too extreme, or resonance too high
Solution: Lower rate, reduce depth, decrease resonance
Problem: Mono sound after processing
Cause: Stereo phase offset set to 0°
Solution: Increase stereo phase offset to 90-180°
Problem: Excessive low-frequency modulation
Cause: Center delay too long, sweeping very low frequencies
Solution: Decrease center_delay_ms to target higher frequencies

Technical Deep Dive

Digital Implementation

Time-Varying Delay Line

The core phaser algorithm uses a modulated delay line:

For each sample n, channel c: delay_samples[n] = base_samp + mod_samp × sin(2π × rate_hz × n/fs + φ_c) Where: base_samp = center_delay_ms × fs / 1000 mod_samp = depth_ms × fs / 1000 φ_c = 0 for left channel, phase_rad for right channel fs = sampling frequency The delayed signal is then: wet[n] = dry[n - round(delay_samples[n])] Fractional delays could be implemented with interpolation for smoother sweeps

Frequency Response Analysis

The phaser creates a comb filter response:

The frequency response of a delay-based phaser is: H(f) = 1 - mix + mix × exp(-j2πfδ) Magnitude response: |H(f)| = √[(1-mix + mix×cos(2πfδ))² + (mix×sin(2πfδ))²] Notches occur where: cos(2πfδ) = -1 and sin(2πfδ) = 0 ⇒ 2πfδ = (2k+1)π ⇒ f = (2k+1)/(2δ) For δ varying between δ_min and δ_max, notches sweep between: f_min = (2k+1)/(2δ_max) and f_max = (2k+1)/(2δ_min)

Comparison with Other Modulation Effects

Phaser vs Flanger vs Chorus

EffectDelay RangeModulationCharacterUses
Phaser1-10 msNotch filteringSweeping, whooshingGuitar, synths, vocals
Flanger0.1-5 msComb filteringJet-like, metallicSpecial effects, drums
Chorus10-30 msPitch detuningThickening, ensembleVocals, strings, pads

Historical Context

Analog phaser history: The first phaser effects were created in the late 1960s using analog all-pass filter stages. The Uni-Vibe (1967) used photocell-based modulation. The MXR Phase 90 (1974) became the iconic guitar phaser. Analog phasers typically used 4, 6, or 8 stages of all-pass filters. Digital implementations like this script recreate the effect using time-varying delays, which mathematically approximate the phase response of multiple all-pass filters in series.