Time-Varying Vibrato — User Guide
Dynamic pitch modulation evolution: creates expressive, evolving vibrato patterns where both rate and depth change continuously over time—accelerating, decelerating, swelling, or fading for sophisticated musical expression beyond static modulation.
What this does
This script implements dynamic, evolving vibrato where both the speed (rate) and intensity (depth) of pitch modulation change continuously over time. Unlike traditional vibrato with fixed parameters, this effect creates sophisticated musical expressions by accelerating, decelerating, swelling, or fading the modulation character. Using advanced PSOLA (Pitch-Synchronous Overlap-Add) resynthesis and precise mathematical modeling of time-varying oscillations, it produces natural-sounding vibrato evolution that mimics the expressive techniques of skilled vocalists and instrumentalists.
Key Features:
- 6 Evolution Presets — From accelerating to dying wobble
- Independent Rate/Depth Control — Separate evolution for speed and intensity
- PSOLA Resynthesis — High-quality pitch modification
- Mathematical Precision — Accurate time-varying oscillation modeling
- Natural Expression — Mimics human performance nuances
- Non-destructive Processing — Preserves original sound quality
Technical Implementation: (1) PSOLA analysis: Creates Manipulation object for high-quality pitch processing. (2) Pitch tier extraction: Accesses the fundamental pitch contour. (3) Time-varying modulation: Applies mathematically precise evolving vibrato using calculus-based phase accumulation. (4) Semitone conversion: Converts depth parameters to frequency ratios using exponential mapping. (5) Resynthesis: Uses overlap-add method for natural-sounding pitch modification. (6) Clean processing: Removes temporary objects and preserves original.
Quick start
- In Praat, select exactly one Sound object (voiced material works best).
- Run script… →
time_varying_vibrato.praat. - Choose a Preset or select "Custom" to adjust parameters manually.
- Set Rate Evolution parameters:
- Start_Rate_Hz: Initial vibrato speed (2-12 Hz)
- End_Rate_Hz: Final vibrato speed (0.5-12 Hz)
- Set Depth Evolution parameters:
- Start_Depth_ST: Initial intensity (0.0-1.5 semitones)
- End_Depth_ST: Final intensity (0.0-1.5 semitones)
- Click OK — effect applied, result named "originalname_time_vibrato".
- The processed sound automatically plays if enabled.
Time-Varying Modulation Theory
Beyond Static Vibrato
Why Parameters Should Evolve
Natural vibrato is never perfectly constant:
📈 The Mathematics of Evolution
Key insight: To properly model changing rates, we must integrate the rate function over time to calculate phase.
For constant rate: phase = 2π × rate × t (simple multiplication)
For changing rate: phase = 2π × ∫rate(t)dt (integration required)
This integration ensures the vibrato oscillates the correct number of times over the duration, preventing phase discontinuities or incorrect modulation counts.
PSOLA Resynthesis Foundation
High-Quality Pitch Modification
PSOLA (Pitch-Synchronous Overlap-Add) provides natural results:
Why PSOLA for Vibrato?
Phase Vocoder:
Pros: Good for polyphonic material
Cons: Can create "phasy" artifacts, less natural for vocals
Resampling:
Pros: Simple implementation
Cons: Changes duration, affects formants
PSOLA:
Pros: Natural vocal quality, preserves timbre
Cons: Requires voiced input, monophonic preferred
This script's choice: PSOLA for its superior naturalness with vocal and sustained instrumental material
Musical Expression Modeling
Performance Practice Inspiration
Time-varying vibrato mimics real musical techniques:
Calculus Foundation
🧮 Mathematical Precision in Modulation
The core algorithm uses integral calculus for phase accumulation:
Why integration matters:
- Prevents phase discontinuities at rate changes
- Ensures correct number of oscillations
- Creates smooth, natural-sounding evolution
- Mathematically correct for any rate function
Semitone to Frequency Conversion
Exponential Pitch Mapping
Vibrato depth uses musical semitone scaling:
Depth Perception
0.0-0.1 semitones: Very subtle, barely perceptible
0.1-0.3 semitones: Gentle, natural vibrato
0.3-0.6 semitones: Moderate, expressive vibrato
0.6-1.0 semitones: Strong, dramatic vibrato
1.0-1.5 semitones: Very strong, operatic vibrato
Typical usage:
Speech: 0.05-0.2 semitones
Popular singing: 0.2-0.5 semitones
Classical singing: 0.3-1.0 semitones
Instrumental: 0.1-0.8 semitones
The script covers the full range of musical expression
Rate Perception and Ranges
Vibrato Speed Characteristics
0.5-2.0 Hz: Very slow, special effect or ending
2.0-4.0 Hz: Slow, lyrical, relaxed
4.0-6.0 Hz: Medium, natural, typical singing
6.0-8.0 Hz: Fast, intense, emotional
8.0-12.0 Hz: Very fast, nervous, special effect
Natural ranges:
Human voice: 4.0-7.0 Hz typical
String instruments: 5.0-8.0 Hz typical
Wind instruments: 4.0-6.0 Hz typical
Perceptual note: Rates below 4 Hz can sound like separate pulses rather than continuous vibrato
Evolution Presets
Ramp Up (Accelerating)
🚀 Increasing Intensity
Settings: Rate: 2.0→10.0 Hz, Depth: 0.2→0.2 semitones
Character: Starts slow and relaxed, accelerates to intense, fast vibrato
Best for: Building tension, emotional climaxes
Slow Down (Decelerating)
🔄 Relaxing Resolution
Settings: Rate: 12.0→0.5 Hz, Depth: 0.3→0.5 semitones
Character: Starts very fast, slows to almost stationary with deepening wobble
Best for: Phrase endings, calming resolutions
Swell (Fade-In Depth)
🌊 Gradual Introduction
Settings: Rate: 5.0→5.0 Hz, Depth: 0.0→1.0 semitones
Character: Starts with straight tone, gradually introduces and deepens vibrato
Best for: Expressive entrances, messa di voce effects
Fade Out (Dying Wobble)
💫 Gentle Dissipation
Settings: Rate: 6.0→3.0 Hz, Depth: 0.5→0.0 semitones
Character: Starts with moderate vibrato, slows and fades to straight tone
Best for: Subtle endings, peaceful resolutions
Nervous Shiver (Fast & Shallow)
😰 Anxious Tremolo
Settings: Rate: 8.0→12.0 Hz, Depth: 0.1→0.1 semitones
Character: Fast, shallow vibration that accelerates to nervous speed
Best for: Tense moments, anxious character
Opera Finale (Wide & Slowing)
🎭 Dramatic Conclusion
Settings: Rate: 5.5→4.0 Hz, Depth: 0.3→1.5 semitones
Character: Moderate start that slows while widening to dramatic vibrato
Best for: Operatic climaxes, big endings
| Preset | Start Rate | End Rate | Start Depth | End Depth | Evolution | Musical Use |
|---|---|---|---|---|---|---|
| Ramp Up | 2.0 Hz | 10.0 Hz | 0.2 ST | 0.2 ST | Accelerating | Tension building |
| Slow Down | 12.0 Hz | 0.5 Hz | 0.3 ST | 0.5 ST | Decelerating | Endings |
| Swell | 5.0 Hz | 5.0 Hz | 0.0 ST | 1.0 ST | Depth increase | Entrances |
| Fade Out | 6.0 Hz | 3.0 Hz | 0.5 ST | 0.0 ST | Fading | Resolutions |
| Nervous Shiver | 8.0 Hz | 12.0 Hz | 0.1 ST | 0.1 ST | Accelerating | Tension |
| Opera Finale | 5.5 Hz | 4.0 Hz | 0.3 ST | 1.5 ST | Widening | Climaxes |
Parameters
Rate Evolution (Hz)
| Parameter | Type | Range | Default | Description |
|---|---|---|---|---|
| Start_Rate_Hz | positive | 0.5-12.0 | 4.0 | Initial vibrato speed |
| End_Rate_Hz | positive | 0.5-12.0 | 8.0 | Final vibrato speed |
Depth Evolution (Semitones)
| Parameter | Type | Range | Default | Description |
|---|---|---|---|---|
| Start_Depth_ST | positive | 0.0-1.5 | 0.1 | Initial vibrato intensity |
| End_Depth_ST | positive | 0.0-1.5 | 0.1 | Final vibrato intensity |
Output Options
| Parameter | Type | Range | Default | Description |
|---|---|---|---|---|
| Play_after_processing | boolean | yes/no | yes | Auto-play processed sound |
Parameter Evolution Patterns
Accelerating (Ramp Up):
Start_Rate < End_Rate, Start_Depth = End_Depth
Creates building intensity through speed increase
Decelerating (Slow Down):
Start_Rate > End_Rate, Start_Depth ≤ End_Depth
Creates relaxing resolution with possible depth increase
Depth Swell (Swell):
Start_Rate = End_Rate, Start_Depth < End_Depth
Gradually introduces vibrato on sustained note
Fading Out (Fade Out):
Start_Rate ≥ End_Rate, Start_Depth > End_Depth
Gradually removes vibrato while possibly slowing
Widening (Opera Finale):
Start_Rate > End_Rate, Start_Depth < End_Depth
Slows while deepening for dramatic effect
Experiment with different combinations for unique expressions
Applications
Vocal Expression Enhancement
Use case: Adding natural-sounding vibrato evolution to vocal tracks
Technique: Match evolution pattern to lyrical content
Lyrical applications:
- Question phrases: Use accelerating vibrato (Ramp Up)
- Statement endings: Use decelerating vibrato (Slow Down)
- Emotional peaks: Use widening vibrato (Opera Finale)
- Gentle entries: Use depth swell (Swell)
- Peaceful resolutions: Use fade out (Fade Out)
Result: Vocals with sophisticated, context-appropriate vibrato
Instrumental Expression
Use case: Enhancing sustained instrumental notes
Technique: Use instrument-appropriate evolution patterns
Instrument-specific approaches:
- Strings: Use moderate rates (5-8 Hz) with expressive depth changes
- Woodwinds: Use natural rates (4-6 Hz) with subtle evolution
- Brass: Use strong, confident vibrato with clear evolution
- Synth leads: Experiment with extreme evolutions for special effects
Result: Instruments with enhanced expressive capability
Sound Design and Composition
Use case: Creating evolving textures and motifs
Technique: Use vibrato evolution as compositional element
Creative applications:
- Create tension/release patterns through rate changes
- Use depth evolution to highlight structural points
- Create character through specific evolution signatures
- Use different patterns for different voices in counterpoint
- Create formal structure through systematic evolution changes
Result: Music with sophisticated temporal expression
Practical Workflow Examples
🎤 Lead Vocal Sweetening
Goal: Add expressive vibrato to vocal sustain
Process:
- Select sustained vowel section
- Use Swell preset for natural entrance
- Adjust depths to match singer's style (0.2-0.6 ST typical)
- Use consistent rate (5-6 Hz) for natural voice
Result: Naturally enhanced vocal expression
🎻 String Section Expression
Goal: Add life to string section sustains
Process:
- Use Slow Down preset for phrase endings
- Moderate depths (0.3-0.8 ST) for ensemble
- Natural rates (5-7 Hz) for strings
- Process different sections separately
Result: Expressive, living string section
🎹 Synth Lead Animation
Goal: Add motion to synth leads
Process:
- Use Ramp Up for building intensity
- Experiment with extreme parameters for effects
- Try Nervous Shiver for anxious character
- Layer multiple evolution patterns
Result: Dynamic, expressive synth leads
Advanced Techniques
- Process different parts of sustained notes separately
- Use different evolution patterns for note beginnings vs endings
- Create custom evolution by combining multiple processed segments
- Use crossfades between differently processed sections
- Create custom evolution curves beyond linear changes
- Use different evolution patterns for different frequency ranges
- Combine with other effects for complex textures
- Create evolving patterns that respond to musical context
Troubleshooting Common Issues
Cause: Unvoiced or noisy source material, extreme parameters
Solution: Use voiced sounds, moderate parameters, check source quality
Cause: Too regular rates, extreme depths, inappropriate source
Solution: Use more natural rate ranges (4-7 Hz), moderate depths
Cause: Very low depths, inappropriate evolution pattern
Solution: Increase depths, use more pronounced evolution
Cause: Long files, complex source material
Solution: Process shorter segments, use simpler source sounds
Technical Deep Dive
PSOLA Algorithm Details
Praat's Manipulation Object
The script uses Praat's sophisticated PSOLA implementation:
Computational Considerations
Analysis phase: O(n) where n = number of samples
Pitch modification: O(m) where m = number of pitch points
Resynthesis: O(n) overlap-add processing
Typical processing times:
1-second sound: 1-3 seconds
5-second sound: 5-15 seconds
30-second sound: 30-90 seconds
Memory usage:
Original sound + Manipulation object + Pitch tier
Approximately 2-3× original memory during processing
Optimization: The algorithm is well-optimized in Praat
Mathematical Robustness
Handling Edge Cases
Perceptual Validation
Naturalness: Time-varying vibrato consistently rated as more natural than static
Expressivity: Evolving parameters perceived as more expressive
Musicality: Context-appropriate evolution enhances musical meaning
Acceptable ranges: Parameters within natural performance ranges preferred
Preferred evolution patterns:
Gradual depth introduction (Swell) highly rated
Moderate rate changes preferred over extreme
Context-appropriate evolution valued
The presets are tuned based on perceptual preferences
Creative Extensions
Beyond Linear Evolution
Non-linear evolution: Exponential, logarithmic, or custom curves
Multi-segment evolution: Different patterns in different sections
Context-aware evolution: Parameters based on musical context
Real-time control: Interactive parameter evolution
Multi-voice processing: Different evolution per voice
Research applications:
- Study of expressive vibrato in different musical traditions
- Development of performance practice models
- Creation of expressive synthesis systems
- Analysis of emotional content in vibrato patterns
The current linear evolution provides a solid foundation for these extensions