Metamodulator — Advanced Ring Modulation User Guide

A sophisticated phase/frequency modulation toolkit: 8 algorithms, 30+ presets for creating everything from subtle harmonic distortion to extreme spectral transformations.

Author: Based on Shai Cohen's AudioTools 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

The Metamodulator implements advanced ring modulation with phase distortion techniques — far beyond simple amplitude modulation. It transforms audio through 8 distinct algorithms that manipulate phase relationships, frequency sweeps, and time-varying modulations. Each algorithm applies mathematical functions (cubic, quadratic, exponential, logarithmic, sinusoidal) to the phase argument of a sine wave modulator, creating complex sidebands, harmonic distortions, and evolving spectral textures. With 30+ carefully crafted presets, this tool provides instant access to sounds ranging from subtle vintage warmth to extreme sci-fi transformations.

Key Features:

What is Ring Modulation? Traditional ring modulation multiplies a signal by a sine wave at a fixed frequency, creating sum and difference frequencies (sidebands) symmetrically around the original spectrum. This produces the classic "robot voice" or metallic bell-like sounds. The Metamodulator extends this concept by: (1) Phase distortion: Adding polynomial terms (x², x³) to the phase argument creates asymmetric sidebands and harmonic distortion. (2) Frequency modulation: Varying the modulator frequency over time creates sweeping, evolving textures. (3) Complex waveforms: Using more sophisticated modulator functions beyond simple sine waves. (4) Dynamic depth: Modulating the modulation parameters themselves. This creates a much richer palette of timbral transformations suitable for sound design, synthesis, and experimental composition.

Technical Implementation: (1) Signal multiplication: Original signal × modulator function: output = input × sin(φ(t)), where φ(t) is a time-varying phase function. (2) Algorithm selection: Each algorithm defines φ(t) differently: cubic φ(t) = 2πf₀t + αt³, exponential sweep φ(t) = 2πf_start·exp(ln(f_end/f_start)·t/t_max)·t, etc. (3) Parameter mapping: User parameters (f0, mod_factor, mod_rate) adjust algorithm coefficients. (4) Preset logic: Pre-configured parameter sets optimized for specific timbral effects. (5) Normalization: Output scaled to prevent clipping while maintaining dynamic range. (6) Real-time processing: Formula applied directly to sound buffer for immediate results.

Quick start

  1. In Praat, select exactly one Sound object (mono or stereo).
  2. Run script…metamodulator.praat.
  3. Choose a Preset from the categorized list (easiest way to start).
  4. For manual control, select Custom (Use Manual Settings) and choose algorithm.
  5. Set Carrier_Frequency_Hz (main modulation frequency, 50-2000Hz typical).
  6. For sweep algorithms, set Start_Frequency_Hz and End_Frequency_Hz.
  7. Adjust Modulation_Factor (distortion depth/amount).
  8. For FM algorithms, set Modulation_Rate_Hz (LFO speed).
  9. Set Scale_peak to 0.99 for safe output levels.
  10. Enable Play_result to hear immediately.
  11. Click OK — processing is instantaneous.
Quick tip: Start with presets — they're carefully tuned for specific effects. For vocal transformations try "Cubic: Mild Distortion" or "Tremble: Gentle Warble". For sci-fi effects try "TimeVar: Laser Beam" or "Spiral: Cosmic". For musical textures try "Quad: Subtle Shimmer" or "SinFM: Classic". Lower frequencies (50-200Hz) create bassy, harmonic effects; higher frequencies (500-2000Hz) create metallic, bell-like sounds. Modulation_Factor controls intensity: 0.1-0.5 = subtle, 1-2 = moderate, 3+ = extreme. The script preserves stereo information — each channel is processed identically. Processing is destructive but creates a new object with "_Algorithm" suffix.
Important: DESTRUCTIVE PROCESSING — Creates new sound object, original remains untouched. Frequency ranges: Extremely low frequencies (< 20Hz) may create subharmonic effects; extremely high frequencies (> 5000Hz) may cause aliasing. Modulation depth: Very high Modulation_Factor values can create extreme distortion and potential clipping (use Scale_peak). Source material: Works best with harmonically rich sources (speech, strings, percussion). Simple sine waves may produce less interesting results. Algorithm-specific parameters: Some parameters only affect certain algorithms (e.g., mod_rate only affects algorithms 5,6,8). Stereo processing: Both channels multiplied by same modulator — for independent channel processing, extract channels first. Real-time limitation: Very long files (> 5 minutes) may take several seconds to process.

Modulation Theory

Core Mathematical Framework

🔧 Fundamental Equation

General Metamodulation Formula:

output(t) = input(t) × sin(φ(t))

where φ(t) is the phase function — the heart of each algorithm

Traditional ring modulation: φ(t) = 2πf₀t (fixed frequency)

Metamodulation: φ(t) = complex function of time with multiple terms

Phase vs Frequency Modulation

Understanding the relationship:

# INSTANTANEOUS FREQUENCY # Derivative of phase gives instantaneous frequency f_inst(t) = (1/2π) × dφ(t)/dt # Example 1: Fixed frequency (traditional) φ(t) = 2πf₀t dφ/dt = 2πf₀ f_inst(t) = f₀ (constant) # Example 2: Cubic phase distortion (Algorithm 1) φ(t) = 2πf₀t + αt³ dφ/dt = 2πf₀ + 3αt² f_inst(t) = f₀ + (3α/2π)t² (increases quadratically) # Example 3: Quadratic chirp (Algorithm 7) φ(t) = πf₀t² dφ/dt = 2πf₀t f_inst(t) = f₀t (increases linearly) # Key insight: Different phase functions → different frequency evolution patterns # This creates the distinctive character of each algorithm

Sideband Generation Mathematics

How Modulation Creates New Frequencies

For input signal with frequency f_input:

# SIMPLE RING MODULATION (sinusoidal modulator at f₀) input(t) = sin(2πf_input·t) modulator(t) = sin(2πf₀·t) output(t) = sin(2πf_input·t) × sin(2πf₀·t) # Trigonometric identity: sin(A) × sin(B) = ½[cos(A-B) - cos(A+B)] # Therefore: output(t) = ½[cos(2π(f_input - f₀)t) - cos(2π(f_input + f₀)t)] # Result: TWO SIDEBANDS at f_input ± f₀ # Original frequency f_input disappears (suppressed carrier) # Symmetric sidebands around original # COMPLEX MODULATION (non-sinusoidal phase) # When φ(t) is complex, modulator contains multiple frequencies # Result: MANY SIDEBANDS, asymmetric distribution # Harmonic distortion adds integer multiples # Time-varying φ(t) creates evolving sidebands

Algorithm Classification

Three Fundamental Approaches

📊 Algorithm Categories

1. Phase Distortion (Algorithms 1, 4): Add polynomial terms to phase (t², t³)

2. Frequency Sweep (Algorithms 2, 3, 7): Time-varying instantaneous frequency

3. Frequency Modulation (Algorithms 5, 6, 8): Modulator frequency itself modulated

Common thread: All manipulate φ(t) to create specific spectral/temporal effects

Algorithm Details

Algorithm 1: Cubic Phase Distortion

🎛️ Harsh, Edgy Harmonic Distortion

Formula: output = input × sin(2πf₀t + αt³)

Character: Aggressive, metallic, inharmonic sidebands

Phase function: φ(t) = 2πf₀t + αt³

Instantaneous frequency: f_inst(t) = f₀ + (3α/2π)t²

Key parameter: α = Modulation_Factor (typically 0.5-4.0)

Use: Industrial sounds, metallic percussion, aggressive vocal processing

Algorithm 2: Exponential Frequency Sweep

📈 Smooth Exponential Rise/Fall

Formula: output = input × sin(2πf_start·exp(ln(f_end/f_start)·t/t_max)·t)

Character: Smooth, musical sweeps, doppler-like effects

Phase function: φ(t) = 2πf_start·exp(k·t)·t where k = ln(f_end/f_start)/t_max

Instantaneous frequency: f_inst(t) = f_start·exp(k·t)·(1 + k·t)

Key parameters: f_start, f_end (50-2000Hz typical)

Use: Riser effects, transitions, sci-fi sounds, sound design

Algorithm 3: Logarithmic Frequency Sweep

📉 Logarithmic Descent

Formula: output = input × sin(2πf_start·exp(-ln(f_start/f_end)·t/t_max)·t)

Character: Descending sweeps, falling effects, impact tails

Phase function: φ(t) = 2πf_start·exp(-k·t)·t where k = ln(f_start/f_end)/t_max

Instantaneous frequency: f_inst(t) = f_start·exp(-k·t)·(1 - k·t)

Key parameters: f_start > f_end for descent

Use: Falling objects, descending tones, impact decays

Algorithm 4: Quadratic Phase Modulation

🎚️ Softer, Tubey Distortion

Formula: output = input × sin(2πf₀t + αt²)

Character: Warm, vintage, harmonic distortion

Phase function: φ(t) = 2πf₀t + αt²

Instantaneous frequency: f_inst(t) = f₀ + (α/π)t

Key parameter: α = Modulation_Factor (typically 0.1-1.5, can be negative)

Use: Vintage effects, tube amp simulation, warm harmonic enhancement

Algorithm 5: Sinusoidal FM

🎵 Classic Frequency Modulation

Formula: output = input × sin(2π(f₀ + β·sin(2πf_m t))t)

Character: Rich, evolving, synth-like textures

Phase function: φ(t) = 2πf₀t + (β/f_m)·cos(2πf_m t)

Instantaneous frequency: f_inst(t) = f₀ + β·sin(2πf_m t)

Key parameters: f₀ (carrier), β = Modulation_Factor (depth), f_m = Modulation_Rate_Hz

Use: FM synthesis textures, bell-like sounds, evolving pads

Algorithm 6: Spiral FM

🌀 Complex Evolving Modulation

Formula: output = input × sin(2π(f₀ + β·sin(ωt)·t/t_max)t)

Character: Swirling, vortex-like, hypnotic motion

Phase function: Complex integral form

Instantaneous frequency: f_inst(t) = f₀ + β·sin(ωt)·t/t_max

Key parameters: β = Modulation_Factor (50-250), ω = 2π·Modulation_Rate_Hz

Use: Hypnotic textures, swirling effects, psychedelic sounds

Algorithm 7: Time-Varying (Chirp)

⚡ Quadratic Chirp Modulation

Formula: output = input × sin(πf₀t²)

Character: Metallic, glitchy, rising tension

Phase function: φ(t) = πf₀t²

Instantaneous frequency: f_inst(t) = f₀t (linear increase)

Key parameter: f₀ controls sweep rate (100-800Hz typical)

Use: Laser sounds, glitch effects, rising tension, sci-fi

Algorithm 8: Trembling (Vibrato+Chirp)

🎭 Combined Vibrato and Chirp

Formula: output = input × sin(πf₀(1 + ε·sin(2πf_m t))t²)

Character: Wobbly, unstable, organic modulation

Phase function: φ(t) = πf₀t² + (πεf₀/f_m)·t·cos(2πf_m t)

Instantaneous frequency: f_inst(t) = f₀t(1 + ε·sin(2πf_m t))

Key parameters: ε = Modulation_Factor (0.01-0.15), f_m = Modulation_Rate_Hz

Use: Vocal processing, organic textures, unstable effects, vintage synth

Presets Gallery

🎯 Cubic Phase Distortion Presets

Cubic: Mild Distortion — Subtle harmonic enhancement, f₀=100Hz, α=1

Cubic: Strong Distortion — Aggressive metallic effect, f₀=200Hz, α=4

Cubic: High Frequency — Bell-like, upper harmonics, f₀=300Hz, α=2.5

📈 Exponential Sweep Presets

ExpSweep: Slow — Gentle rise 100→600Hz, musical sweep

ExpSweep: Fast — Quick rise 50→1200Hz, dramatic effect

ExpSweep: Narrow Range — Subtle 200→400Hz, delicate modulation

📉 Logarithmic Sweep Presets

LogSweep: Descending Classic — Falling tone 800→50Hz

LogSweep: Fast Descent — Quick fall 1000→100Hz

🎚️ Quadratic Phase Presets

Quad: Gentle Bend — Warm enhancement, f₀=150Hz, α=0.3

Quad: Classic Sweep — Vintage tube sound, f₀=200Hz, α=0.5

Quad: Dramatic Warp — Noticeable distortion, f₀=250Hz, α=1.0

Quad: Reverse Bend — Descending phase, f₀=180Hz, α=-0.4

Quad: Extreme Distortion — Heavy saturation, f₀=300Hz, α=1.5

Quad: Subtle Shimmer — Just noticeable, f₀=120Hz, α=0.1

🎵 Sinusoidal FM Presets

SinFM: Classic — Traditional FM, f₀=300Hz, f_m=2Hz, β=100

SinFM: Deep Modulation — Rich texture, f₀=400Hz, f_m=3Hz, β=200

🌀 Spiral FM Presets

Spiral: Gentle — Subtle swirl, f₀=200Hz, f_m=0.5Hz, β=80

Spiral: Classic Vortex — Medium swirl, f₀=250Hz, f_m=0.8Hz, β=150

Spiral: Intense Whirlpool — Strong motion, f₀=300Hz, f_m=1.2Hz, β=200

Spiral: Deep Rotation — Low swirl, f₀=150Hz, f_m=0.6Hz, β=120

Spiral: Hypnotic Spin — Fast swirl, f₀=400Hz, f_m=1.5Hz, β=180

Spiral: Cosmic — Extreme swirl, f₀=180Hz, f_m=0.7Hz, β=250

⚡ Time-Varying (Chirp) Presets

TimeVar: Subtle Shimmer — Gentle chirp, f₀=100Hz

TimeVar: Rising Metallic — Medium rise, f₀=200Hz

TimeVar: Sci-Fi Sweep — Strong rise, f₀=300Hz

TimeVar: Laser Beam — Intense rise, f₀=500Hz

TimeVar: Extreme Glitch — Very fast rise, f₀=800Hz

🎭 Trembling (Vibrato+Chirp) Presets

Tremble: Gentle Warble — Subtle vibrato, f₀=200Hz, f_m=5Hz, ε=0.03

Tremble: Radio Interference — Medium warble, f₀=440Hz, f_m=25Hz, ε=0.08

Tremble: Deep Space — Slow wobble, f₀=100Hz, f_m=10Hz, ε=0.1

Tremble: Vintage Synth — Classic LFO, f₀=300Hz, f_m=20Hz, ε=0.06

Tremble: Alien Voice — Extreme wobble, f₀=150Hz, f_m=30Hz, ε=0.12

Parameters

Preset Selection

ParameterTypeDefaultDescription
PresetoptionCustom30+ categorized presets for instant effects

Manual Algorithm Selection

ParameterTypeDefaultDescription
Manual_AlgorithmoptionCubic Phase Distortion8 algorithms with distinct characters

Frequency Parameters

ParameterTypeDefaultRangeDescription
Carrier_Frequency_Hzpositive20020-5000Base modulation frequency (algorithms 1,4,5,6,7,8)
Start_Frequency_Hzpositive10020-5000Starting frequency for sweep algorithms (2,3)
End_Frequency_Hzpositive80020-5000Ending frequency for sweep algorithms (2,3)

Modulation Parameters

ParameterTypeDefaultRangeDescription
Modulation_Factorreal2.0-10 to 10Depth/amount: α for algorithms 1,4; β for 5,6; ε for 8
Modulation_Rate_Hzpositive5.00.1-100LFO rate for algorithms 5,6,8 (FM speed)

Output Control

ParameterTypeDefaultDescription
Scale_peakpositive0.99Output normalization level (0.5-1.0)
Play_resultboolean1 (yes)Auto-play processed sound

Algorithm-Specific Parameter Mapping

AlgorithmCarrier_FrequencyModulation_FactorModulation_RateStart/End Freq
1. Cubic Phasef₀ (center frequency)α (cubic coefficient)
2. Exponential Sweepf_start, f_end
3. Logarithmic Sweepf_start, f_end
4. Quadratic Phasef₀ (center frequency)α (quadratic coefficient)
5. Sinusoidal FMf₀ (carrier frequency)β (modulation depth)f_m (modulation rate)
6. Spiral FMf₀ (center frequency)β (spiral depth)ω (spiral rate)
7. Time-Varying Chirpf₀ (chirp rate)
8. Tremblingf₀ (base frequency)ε (vibrato depth)f_m (vibrato rate)

Applications

Vocal Processing & Transformation

Use case: Creating robot voices, alien speech, vintage radio effects

Recommended algorithms: Cubic Phase (aggressive), Trembling (organic), Quadratic (warm)

Presets: "Tremble: Alien Voice", "Cubic: Strong Distortion", "Quad: Vintage Synth"

Sound Design for Media

Use case: Sci-fi effects, magical transformations, industrial sounds

Recommended algorithms: Time-Varying (lasers), Spiral FM (vortex), Exponential Sweep (risers)

Presets: "TimeVar: Laser Beam", "Spiral: Cosmic", "ExpSweep: Fast"

Musical Texture Creation

Use case: Adding harmonic interest, creating evolving pads, enhancing percussion

Recommended algorithms: Sinusoidal FM (bells), Quadratic Phase (warmth), Spiral FM (motion)

Workflow:

  • Process individual instrument tracks with subtle modulation
  • Create ensemble effects by processing groups
  • Use different algorithms on different frequency ranges
  • Combine with reverb and delay for atmospheric results

Experimental & Electroacoustic Composition

Use case: Radical timbral transformation, spectral manipulation

Recommended algorithms: All algorithms with extreme settings

Advantages:

  • Mathematically precise control over spectral evolution
  • Repeatable transformations for compositional structure
  • Complex results from simple parameter changes
  • Integration with other Praat processing tools

Practical Workflow Examples

🎤 Vocal Robotization (Podcast/Media)

Goal: Create clear robot voice effect without losing intelligibility

Settings:

  • Algorithm: Cubic Phase Distortion
  • Carrier Frequency: 150Hz (male) or 250Hz (female)
  • Modulation Factor: 1.5-2.0
  • Post-process: Light compression, EQ boost around 2kHz

Result: Intelligible robot voice suitable for dialogue

🎬 Sci-Fi Laser Effect (Film/Game Audio)

Goal: Create convincing laser beam sound with rising pitch

Settings:

  • Algorithm: Time-Varying (Chirp)
  • Carrier Frequency: 500Hz
  • Source: White noise burst or synth zap
  • Post-process: Add short reverb, slight distortion

Result: Classic sci-fi laser with characteristic rise

🎵 Vintage Tape Warmth (Music Production)

Goal: Add analog warmth and subtle harmonic distortion

Settings:

  • Algorithm: Quadratic Phase Modulation
  • Carrier Frequency: 120Hz
  • Modulation Factor: 0.3-0.5
  • Mix: 30-50% wet/dry (process copy and mix with original)

Result: Subtle tube-like warmth without obvious modulation

Advanced Techniques

Algorithm chaining for complex effects:
  • Cubic → Exponential: Aggressive distortion followed by sweep
  • Quadratic → Trembling: Warmth with organic motion
  • Spiral → Time-Varying: Swirling vortex that accelerates
  • Multiple passes: Same algorithm with different parameters

Process sound, rename, process again with different settings

Source material optimization:
  • Speech: Best with clear, dynamic recording
  • Percussion: Creates metallic, bell-like effects
  • Sustained tones: Shows frequency evolution clearly
  • Complex mixtures: Creates dense, evolving textures
  • Simple tones: Demonstrates algorithm characteristics clearly

Different source materials highlight different aspects of each algorithm

Troubleshooting Common Issues

Problem: Output sounds "thin" or weak
Cause: Carrier frequency too high relative to source, or modulation too subtle
Solution: Lower Carrier_Frequency_Hz (try 50-150Hz), increase Modulation_Factor
Problem: Extreme distortion/clipping
Cause: Modulation_Factor too high, or source too loud
Solution: Reduce Modulation_Factor, ensure Scale_peak=0.99, lower source amplitude
Problem: No audible effect
Cause: Parameters inappropriate for algorithm, or misunderstanding effect
Solution: Try presets first, ensure Play_result=1, check audio output
Problem: Unwanted "beating" or pulsation
Cause: Carrier frequency close to source fundamental, interference patterns
Solution: Adjust Carrier_Frequency_Hz away from source harmonics, try different algorithm

Technical Reference

Mathematical Derivations

Instantaneous Frequency Calculations

For each algorithm:

# Algorithm 1: Cubic Phase Distortion φ(t) = 2πf₀t + αt³ f_inst(t) = (1/2π)·dφ/dt = f₀ + (3α/2π)t² # Algorithm 4: Quadratic Phase Modulation φ(t) = 2πf₀t + αt² f_inst(t) = f₀ + (α/π)t # Algorithm 5: Sinusoidal FM φ(t) = 2πf₀t + (β/f_m)·sin(2πf_m t) f_inst(t) = f₀ + β·cos(2πf_m t) # Algorithm 7: Time-Varying Chirp φ(t) = πf₀t² f_inst(t) = f₀t # Algorithm 8: Trembling φ(t) = πf₀t² + (πεf₀/f_m)·t·sin(2πf_m t) f_inst(t) = f₀t(1 + ε·sin(2πf_m t)) + (εf₀/2f_m)·cos(2πf_m t)

Spectral Characteristics

Typical Output Spectra by Algorithm

# SIMPLE RING MODULATION (for comparison) Input spectrum at f_in → Output: sidebands at f_in ± f₀ Symmetric, suppressed carrier # CUBIC PHASE DISTORTION (Algorithm 1) Asymmetric sidebands, harmonic distortion components Sideband spacing increases with time Creates metallic, bell-like spectra # QUADRATIC PHASE (Algorithm 4) More harmonic sidebands than cubic Warmer, more musical distortion Sideband evolution more linear # SINUSODIAL FM (Algorithm 5) Bessel function sideband distribution Rich harmonic spectra characteristic of FM synthesis Sideband amplitudes follow J_n(β) # TIME-VARYING CHIRP (Algorithm 7) Continuously shifting sidebands Creates sweeping effect through spectrum Metallic, glissando-like quality