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.
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.
Quick start
- In Praat, select exactly one Sound object.
- Run script… →
AMPLITUDE-VARYING_RING_MOD.praat. - Choose Preset: Default, Subtle Modulation, Extreme Sweep, or Fast Pulsing.
- Or customize: carrier_frequency (base pitch), sweep_exponent (acceleration), amplitude_rate (tremolo speed), amplitude_center/depth (tremolo range).
- Click OK — output named "originalname_ringmod".
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
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
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.
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.
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.
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.