Unified Vibrato Generator — User Guide

Advanced pitch modulation: combines four distinct vibrato and chorus algorithms in a single unified interface for creating expressive pitch variations, from classic vibrato to complex multi-voice chorus 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 unified vibrato generator — a comprehensive pitch modulation system that provides four distinct algorithms for creating expressive pitch variations. Unlike simple pitch shifting, this system uses delay-based modulation to create natural-sounding vibrato and chorus effects that mimic performance techniques and analog hardware. The four modes include: (1) Standard Vibrato: Classic constant-speed pitch oscillation. (2) Chirped Vibrato: Accelerating or decelerating pitch modulation for dynamic expression. (3) Rate Modulation: "Wobbly" vibrato with modulated speed for organic, imperfect character. (4) Swarm/Chorus: Multi-voice layered effects that create rich, ensemble-like textures.

Key Features:

What is vibrato vs chorus? Vibrato and chorus are related but distinct modulation effects: (1) Vibrato: Periodic pitch variation applied to a single voice, typically used for expressive emphasis in vocals and instruments. Creates a "wobbling" pitch effect. (2) Chorus: Multiple slightly detuned copies of a signal mixed together, creating the illusion of multiple performers or instruments. Creates "thickening" and "widening" effects. This unified system bridges both concepts: Standard and Chirped modes create true vibrato, while Swarm mode creates chorus-like effects through multi-voice layering. Rate Modulation sits between them, creating complex, evolving pitch variations that have characteristics of both effects.

Technical Implementation: (1) Delay-line modulation: All modes use variable delay lines to create pitch shifts — shorter delays raise pitch, longer delays lower pitch. (2) Mathematical modulation: Sine waves and more complex functions control delay time variations. (3) Phase accumulation: Careful phase tracking ensures smooth pitch transitions. (4) Boundary handling: Robust sample indexing prevents out-of-bounds errors. (5) Multi-voice synthesis: Swarm mode combines multiple modulated copies with phase offsets. The system uses Praat's efficient formula processing and sample-level precision to create professional-quality modulation effects.

Quick start

  1. In Praat, select exactly one Sound object.
  2. Run script…Unified_Vibrato_Generator.praat.
  3. Choose Mode from four options based on desired effect.
  4. Set Base_delay_ms (3-10ms for typical vibrato).
  5. Adjust Modulation_depth (0.05-0.20 for subtle to strong effects).
  6. Set Base_rate_hz (4-7 Hz for typical vibrato rates).
  7. Configure mode-specific parameters as needed.
  8. Set output normalization and playback options.
  9. Click OK — processing completes quickly.
  10. Output appears with descriptive name based on selected mode.
Quick tip: Start with Standard mode for classic vibrato effects on vocals and solo instruments. Use Chirped mode for expressive effects that accelerate or decelerate. Try Rate Modulation for organic, "wobbly" vibrato that sounds more human and less mechanical. Use Swarm mode for rich chorus effects on synthesizers, guitars, and pads. Base_delay_ms around 5ms works well for most material — shorter delays create sharper pitch changes, longer delays create more subtle modulation. Modulation_depth 0.10 gives noticeable but musical vibrato. Rates around 5-6 Hz match typical vocal and instrumental vibrato speeds. Experiment with different modes to discover their unique characters.
Important: DELAY-BASED PROCESSING — all modes work by varying delay times, which can cause slight time smearing on transients. Extreme settings may cause audible artifacts or pitch inaccuracies. Very high modulation depths can create unnatural pitch variations. Very low base rates (<2 Hz) may not be perceived as vibrato. Swarm mode with many layers can significantly increase processing time. Boundary conditions are handled gracefully, but very short sounds may not show full modulation cycles. Stereo files are processed with identical modulation on both channels. Output normalization preserves the effect character while preventing clipping. Always audition results on representative material.

Vibrato Theory

Delay-Line Modulation Fundamentals

Pitch Shifting Through Variable Delay

Time-stretching principles:

Basic delay modulation: output[n] = input[n + d(n)] Where d(n) is the time-varying delay: d(n) = base_delay × (1 + depth × modulator(n)) Pitch relationship: When delay decreases: playing faster → pitch rises When delay increases: playing slower → pitch falls Constant delay: no pitch change Oscillating delay: vibrato effect Mathematical implementation: sample_index = current_sample + round(base_delay_samples × (1 + modulation_depth × modulator(time))) Key insight: Vibrato = periodic variation of playback speed Implemented through time-varying delay line Creates natural pitch modulation without resynthesis

Why Delay-Based Modulation?

Advantages over pitch shifting:

Modulation Mathematics

Phase Accumulation and Waveforms

Sine wave modulation basics:

Standard vibrato modulator: modulator(t) = sin(2π × rate × t) Phase accumulation: phase(t) = 2π × rate × t This creates a linearly increasing phase Delay calculation: delay_samples(t) = base_delay × (1 + depth × sin(phase(t))) Sample reading: read_position = current_sample + round(delay_samples(t)) Why sine waves? Smooth, musical modulation Natural sounding pitch variation No sharp transitions Mathematically pure

Why Complex Modulation?

Beyond simple sine waves:

🎵 Vibrato Intuition

For vocal vibrato:

Rate: 5-7 Hz (natural vocal oscillation speed)

Depth: 10-30 cents (subtle pitch variation)

Result: Expressive, living vocal quality


For string instruments:

Rate: 4-6 Hz (slightly slower than vocals)

Depth: 20-50 cents (more pronounced variation)

Result: Rich, emotional string expression

Multi-Voice Chorus Principles

Ensemble Effect Creation

Layered modulation theory:

Chorus effect principle: Multiple slightly detuned copies create ensemble illusion Each voice has unique modulation characteristics Combined result sounds like multiple performers Swarm mode implementation: FOR each layer i from 1 to N: rate_i = base_rate + (i-1) × layer_spread phase_i = i × (2π / N) [phase offset] depth_i = modulation_depth [same for all layers] voice_i = original[delay_samples(rate_i, phase_i, depth_i)] output = Σ voice_i / N Why this works: Slight rate differences prevent phase cancellation Phase offsets ensure voices don't start in sync Averaging maintains consistent loudness Creates rich, wide stereo-like effect

Why Multi-Voice Effects?

Sonic benefits:

Four Modes

🎚️ Comprehensive Modulation System

Complete comparison of all four vibrato and chorus algorithms:

Mode 1: Standard Vibrato

AspectCharacterBest ForTechnical Approach
ModulationConstant speed, regularClassic vibrato, vocalsSimple sine wave LFO
Rate BehaviorFixed frequencyPredictable, musicalbase_rate_hz constant
Sound QualityClean, pureNatural instrumentssin(2π × rate × t)
ComplexityLowTraditional applicationsSingle modulation source

Mode 2: Chirped Vibrato

AspectCharacterBest ForTechnical Approach
ModulationAccelerating/deceleratingExpressive solos, effectsLinear frequency sweep
Rate BehaviorTime-varyingDynamic expressionrate(t) = base + sweep × t
Sound QualityEvolving, dramaticLead lines, synthsPhase integral of rate(t)
ComplexityMediumCreative applicationsQuadratic phase accumulation

Mode 3: Rate Modulation

AspectCharacterBest ForTechnical Approach
ModulationWobbly, irregularOrganic sounds, vintageModulated LFO rate
Rate BehaviorModulated speedHuman-like variationrate(t) = base + sens × sin(2π × mod_rate × t)
Sound QualityImperfect, aliveAnalog emulationNested sine modulation
ComplexityHighCharacter effectsComplex phase relationship

Mode 4: Swarm/Chorus

AspectCharacterBest ForTechnical Approach
ModulationMulti-voice, richEnsemble effects, padsLayered detuned voices
Rate BehaviorDistributed ratesThickening, wideningMultiple LFOs with spreads
Sound QualityDense, wideSynthesizers, guitarsWeighted voice summation
ComplexityVery highProduction effectsMulti-layer processing

Mode Selection Guide

Choosing the right mode:
  • Use Standard mode when:
    • You want classic, predictable vibrato
    • Processing vocals or acoustic instruments
    • Creating natural performance expression
    • You need clean, musical pitch modulation
  • Use Chirped mode when:
    • You want expressive, dynamic vibrato
    • Processing lead instruments or solos
    • Creating dramatic build-up or release effects
    • You need time-varying modulation intensity
  • Use Rate Modulation when:
    • You want organic, human-like vibrato
    • Emulating vintage analog effects
    • Creating "wobbly" or imperfect modulation
    • You need complex, evolving pitch variations
  • Use Swarm mode when:
    • You want rich chorus or ensemble effects
    • Thickening synthesizers or electric guitars
    • Creating wide, spacious sounds from mono sources
    • You need professional production effects

Each mode offers unique creative possibilities for different musical contexts

Creative Mode Applications

🎤 Vocal Expression

Mode: Standard or Chirped

Application: Add natural vibrato to sustained vocal notes

Result: Expressive, living vocal quality that enhances emotion

🎸 Analog Synth

Mode: Rate Modulation

Application: Process analog-style synthesizer patches

Result: Vintage, organic modulation with character and warmth

🎹 Rich Pads

Mode: Swarm/Chorus

Application: Thicken and widen synth pads and strings

Result: Dense, ensemble-like textures with movement and depth

Parameters Guide

⚙️ Complete Parameter Reference

Detailed explanation of all vibrato and chorus parameters:

Common Parameters (All Modes)

ParameterRangeDefaultDescription
Base_delay_ms1.0-20.05.0Center delay time in milliseconds
Modulation_depth0.01-0.500.10Pitch modulation intensity (0-50%)
Base_rate_hz0.5-15.05.0Base modulation frequency in Hz
Scale_peak0.1-1.00.99Output peak normalization level
Play_after_processing0/11Auto-play result after processing

Chirped Mode Parameters (Mode 2)

ParameterRangeDefaultDescription
Sweep_rate_hz_per_sec-10.0 to 10.02.0Rate change speed (Hz per second)

Rate Modulation Parameters (Mode 3)

ParameterRangeDefaultDescription
Rate_sensitivity0.1-10.03.0Rate modulation depth
Rate_mod_freq_hz0.1-5.00.8Rate modulation frequency

Swarm Mode Parameters (Mode 4)

ParameterRangeDefaultDescription
Number_of_layers2-126Number of chorus voices
Layer_spread_hz0.1-2.00.5Rate spread between voices

Parameter Interactions

Key relationships:
  • Base_delay vs pitch range: Longer delays = wider pitch variation
  • Modulation_depth vs intensity: Higher depth = stronger vibrato
  • Base_rate vs speed: Higher rates = faster oscillation
  • Sweep_rate vs acceleration: Positive = speed up, negative = slow down
  • Layer parameters vs richness: More layers + wider spread = thicker chorus

Parameters interact differently in each mode to create unique modulation characters

Recommended Settings

🎻 Natural Vocal Vibrato

Mode: Standard

Settings:

  • Base_delay_ms: 5.0
  • Modulation_depth: 0.08
  • Base_rate_hz: 6.0

🎹 Analog Chorus

Mode: Swarm

Settings:

  • Base_delay_ms: 7.0
  • Modulation_depth: 0.12
  • Base_rate_hz: 4.5
  • Number_of_layers: 4
  • Layer_spread_hz: 0.3

🎸 Expressive Lead

Mode: Chirped

Settings:

  • Base_delay_ms: 6.0
  • Modulation_depth: 0.15
  • Base_rate_hz: 5.0
  • Sweep_rate_hz_per_sec: 3.0

Applications

Vocal Production

Use case: Add expressive vibrato to sustained vocal notes

Technique: Use Standard mode with natural rates and depths

Example: Enhance emotional impact in ballad and opera vocals

Instrument Enhancement

Use case: Create vibrato on instruments without natural modulation

Technique: Use Rate Modulation for organic character

Example: Add expression to sampled instruments and synthesizers

Sound Design

Use case: Create rich chorus and ensemble effects

Technique: Use Swarm mode with multiple layers

Example: Transform mono synthesizers into wide, lush textures

Vintage Emulation

Use case: Recreate classic analog modulation effects

Technique: Use Rate Modulation with medium sensitivity

Example: Emulate tape wow and flutter, analog chorus units

💡 Creative Techniques

Advanced applications:

  • Layered modulation: Process different frequency bands with different modes
  • Automated parameters: Change rates and depths over time for evolving effects
  • Extreme settings: Use very high rates or depths for special effects
  • Combination effects: Process already-modulated sounds for complex results

Troubleshooting Common Issues

Problem: Artifacts or glitches
Cause: Extreme modulation settings or very short sounds
Solution: Use more moderate parameters or longer audio segments
Problem: Effect too subtle
Cause: Low modulation depth or inappropriate rate
Solution: Increase depth or adjust rate for better perception
Problem: Unnatural sounding
Cause: Too regular modulation or extreme settings
Solution: Use Rate Modulation mode or more natural parameters
Problem: Processing too slow
Cause: Swarm mode with many layers on long files
Solution: Reduce layer count or process shorter segments