Amplitude-Varying Ring Modulation — User Guide

Dynamic ring modulation with three modulation layers: (1) frequency sweep via exponential acceleration, (2) amplitude tremolo at varying rate, (3) carrier frequency modulation — creates complex, evolving metallic and inharmonic timbres.

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 applies amplitude-varying ring modulation — a complex effect combining three modulation types: (1) Ring modulation: Multiplies input by carrier sine wave (creates sum/difference frequencies, metallic/bell-like timbre). (2) Frequency sweep: Carrier frequency accelerates exponentially over time (linear if exponent=1, quadratic if exponent=2, faster if exponent>2). (3) Amplitude tremolo: Ring modulation depth varies sinusoidally at specified rate (creates pulsing/throbbing effect). Result: Highly dynamic, evolving metallic textures. Unlike static ring modulation, this creates continuous timbral change — frequency content and intensity both evolve over duration.

What is ring modulation? Ring modulation multiplies two signals (input × carrier), producing sum and difference frequencies: f_out = f_input ± f_carrier. This creates inharmonic partials (not integer multiples of fundamental) — characteristic metallic, bell-like, or robotic timbre. Classic use: Dalek voices (Doctor Who), 1960s electronic music, experimental sound design. This script adds: (1) Time-varying carrier frequency (sweep), (2) Time-varying modulation depth (tremolo) — creating much more complex, evolving textures than static ring mod.

Quick start

  1. In Praat, select exactly one Sound object.
  2. Run script…AMPLITUDE-VARYING_RING_MOD.praat.
  3. Choose Preset: Default, Subtle Modulation, Extreme Sweep, or Fast Pulsing.
  4. Or customize: carrier_frequency (base pitch), sweep_exponent (acceleration), amplitude_rate (tremolo speed), amplitude_center/depth (tremolo range).
  5. Click OK — output named "originalname_ringmod".
Quick tip: For classic ring mod: Use Subtle Modulation preset (gentle sweep, slow tremolo). For extreme sci-fi effects: Use Extreme Sweep preset (fast acceleration, deep tremolo). For rhythmic pulsing: Use Fast Pulsing preset (rapid amplitude variation). Carrier frequency determines base pitch of effect (low=dark, high=bright). Sweep exponent controls acceleration: 1=linear, 2=quadratic (parabolic), 3=cubic (rapid acceleration). Works best on: Tonal material (synthesizers, vocals, sustained notes). Less effective on: Pure noise or percussive transients.
Important: Creates inharmonic output — input pitch destroyed, replaced with sum/difference frequencies. Not suitable if you need to preserve original pitch. Effect is non-linear — amplitude relationships altered. Stereo preserved (each channel processed independently). Processing instant (<1 second). Output may be louder than input — default scale_peak=0.99 prevents clipping.

Presets

Default

Carrier frequency: 250 Hz

Sweep exponent: 2 (quadratic)

Amplitude rate: 3 Hz (slow tremolo)

Amplitude center/depth: 0.5 ± 0.5 (full range 0.0-1.0)

Character: Balanced ring modulation with moderate sweep and gentle pulsing. Mid-range carrier creates bell-like timbre.

Subtle Modulation

Carrier frequency: 100 Hz (low)

Sweep exponent: 1.5 (sub-quadratic)

Amplitude rate: 1 Hz (very slow tremolo)

Amplitude center/depth: 0.7 ± 0.3 (range 0.4-1.0)

Character: Gentle, dark ring modulation. Slow evolution. Lower depth maintains more of original signal. Suitable for ambient processing.

Extreme Sweep

Carrier frequency: 500 Hz (high)

Sweep exponent: 3 (cubic)

Amplitude rate: 5 Hz (medium tremolo)

Amplitude center/depth: 0.5 ± 0.5 (full range)

Character: Dramatic, rapidly accelerating sweep. High carrier creates bright, metallic timbre. Fast cubic acceleration creates explosive frequency evolution.

Fast Pulsing

Carrier frequency: 200 Hz

Sweep exponent: 2 (quadratic)

Amplitude rate: 10 Hz (fast tremolo)

Amplitude center/depth: 0.6 ± 0.4 (range 0.2-1.0)

Character: Rapid amplitude pulsing (10 times per second). Creates rhythmic throbbing. Quadratic sweep maintains moderate frequency evolution.

Parameters

Parameter Type Default Description
Preset Menu Default Choose preset: Default, Subtle Modulation, Extreme Sweep, Fast Pulsing. Overrides all other parameters.
carrier_frequency Positive 250 Base frequency for ring modulation in Hz. Range: 50-2000 Hz typical. Lower = darker, higher = brighter. Determines pitch center of metallic timbre.
sweep_exponent Positive 2 Controls frequency acceleration. Range: 1-5. 1 = linear sweep, 2 = quadratic (parabolic), 3+ = rapid acceleration. Higher values = faster frequency increase over time.
amplitude_rate Positive 3 Rate of amplitude tremolo in Hz. Range: 0.5-20 Hz typical. 1 Hz = once per second. Higher values = faster pulsing. Creates rhythmic intensity variation.
amplitude_center Positive 0.5 Center point of amplitude variation. Range: 0.0-1.0. 0.5 = centered. Higher values = generally louder effect. Combined with depth to define amplitude range.
amplitude_depth Positive 0.5 Depth of amplitude variation (±range). Range: 0.0-1.0. Amplitude varies between (center - depth) and (center + depth). 0.5 with center 0.5 = full range 0.0-1.0.
scale_peak Positive 0.99 Peak normalization. Range: 0.0-1.0. Prevents clipping. 0.99 = -0.09 dB headroom.
play_after_processing Boolean 1 (true) Auto-play result. 1 = play immediately, 0 = silent.

Modulation Formula

Complete amplitude-varying ring modulation: output(t) = input(t) × carrier(t) × amplitude_envelope(t) Where: carrier(t) = sin(2π × carrier_freq × t^sweep_exp / sweep_exp) amplitude_envelope(t) = center + depth × sin(2π × amp_rate × t) t = time position in seconds Three modulation components: 1. Ring modulation carrier: Frequency: carrier_freq × t^(sweep_exp - 1) At t=0: carrier_freq At t=1s (sweep_exp=2): carrier_freq × 1 = carrier_freq At t=2s (sweep_exp=2): carrier_freq × 2 = 2 × carrier_freq Frequency increases according to power law 2. Amplitude envelope (tremolo): Oscillates between (center - depth) and (center + depth) Period = 1 / amplitude_rate seconds Example (rate=3 Hz, center=0.5, depth=0.5): At t=0s: amp = 0.5 + 0.5 × sin(0) = 0.5 At t=0.083s: amp = 0.5 + 0.5 × sin(π/2) = 1.0 (peak) At t=0.167s: amp = 0.5 + 0.5 × sin(π) = 0.5 At t=0.25s: amp = 0.5 + 0.5 × sin(3π/2) = 0.0 (trough) 3. Combined effect: Input multiplied by time-varying carrier Then modulated by time-varying amplitude Creates evolving metallic timbre with pulsing intensity

Sweep Exponent Effects

Exponent Curve Type Frequency Evolution Character
1.0 Linear Constant rate increase Steady, predictable sweep
1.5 Sub-quadratic Gentle acceleration Gradual frequency rise
2.0 Quadratic (parabolic) Moderate acceleration Natural-feeling sweep
3.0 Cubic Rapid acceleration Explosive frequency rise
4.0+ Exponential-like Very rapid acceleration Extreme, dramatic sweep

Applications & Use Cases

Sound Design

Sci-Fi & Robot Effects

Settings: Extreme Sweep preset or high carrier_frequency (500+ Hz)

Material: Voice recordings, synthesizer pads

Result: Robotic, alien, or electronic character. Classic sci-fi timbre.

Metallic Textures

Settings: Medium carrier_frequency (200-400 Hz), low amplitude_rate (1-3 Hz)

Material: Sustained notes, drones, pads

Result: Bell-like, gong-like, or metallic percussion timbres.

Experimental Music

Evolving Timbral Clouds

Settings: Subtle Modulation preset, very low amplitude_rate (0.5-1 Hz)

Material: Ambient textures, field recordings

Result: Slow, evolving metallic shimmer. Suitable for ambient/drone music.

Rhythmic Modulation

Settings: Fast Pulsing preset, amplitude_rate synced to tempo (e.g., 2 Hz = 120 BPM 16th notes)

Material: Synthesizer lines, bass

Result: Rhythmic pulsing creates tempo-synced intensity variation.

Voice Processing

Dalek/Robot Voices

Settings: carrier_frequency = 30-50 Hz, sweep_exponent = 1 (no sweep), low amplitude modulation

Result: Classic robot/Dalek voice effect (Doctor Who).

Alien Vocals

Settings: Extreme Sweep preset, high carrier_frequency

Result: Unintelligible, otherworldly vocal textures.

Parameter Combinations

Effect Goal Carrier Freq Sweep Exp Amp Rate Character
Classic Ring Mod 100-300 Hz 1.0 0.5-2 Hz Traditional metallic, minimal evolution
Gentle Shimmer 150-250 Hz 1.5 1-2 Hz Subtle timbral movement
Dramatic Sweep 300-600 Hz 2.5-3.5 3-5 Hz Explosive frequency evolution
Fast Pulsing 200-400 Hz 2.0 8-15 Hz Rapid rhythmic throbbing
Dark/Lo-Fi 50-150 Hz 1.0-1.5 1-3 Hz Dark, murky, vintage character

Troubleshooting

Problem: Output too quiet or disappears
Cause: amplitude_center - amplitude_depth < 0 (negative amplitude range)
Solution: Ensure center ≥ depth. For full range, use center=0.5, depth=0.5. For partial range, reduce depth.
Problem: Effect too subtle on certain material
Cause: Input lacks harmonic content (pure noise), or sweep too slow
Solution: Use harmonically-rich input (synthesizers, tonal sounds). Increase sweep_exponent (2.5-3.5) for more dramatic evolution.
Problem: Harsh, aliased sound at high frequencies
Cause: Carrier frequency sweep exceeds Nyquist frequency (half sample rate)
Solution: Reduce carrier_frequency or sweep_exponent. For 44.1kHz audio, keep carrier below 5000 Hz to avoid aliasing.
Problem: Pitch completely destroyed
Cause: Ring modulation creates inharmonic partials (expected behavior)
Solution: This is characteristic of ring modulation. For pitch preservation, use different effect. Ring mod inherently destroys original pitch.