Amplitude-Varying Ring Modulation — User Guide

Ring modulation with a moving carrier and a separate amplitude envelope. The carrier can remain fixed or follow a rising chirp, while a sinusoidal gain envelope adds slower or faster pulsing.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.9 (2026) License: MIT License Repo: Praat AudioTools
Contents:

What this does

The script multiplies the selected Sound by a sinusoidal carrier, producing ring modulation. Instead of requiring a fixed carrier, the carrier frequency can rise over the duration of the sound. A second sinusoidal control changes the overall gain of the ring-modulated result, creating amplitude pulses at the chosen rate.

Signal flow:
Input Sound → ring modulation by the carrier → amplitude envelope → optional peak normalization → output Sound

For a fixed carrier, ring modulation shifts spectral components into sum-and-difference sidebands around the carrier. When the carrier moves, those sidebands move with it. The amplitude envelope does not change the carrier trajectory; it simply scales the already ring-modulated signal over time.

Quick start

  1. In Praat, select exactly one Sound object.
  2. Run Amplitude-Varying_Ring_Modulation.praat.
  3. Choose a preset, or use Manual to keep the values entered in the form.
  4. Enable Peak_normalize_output only if you want the final result normalized to Scale_peak.
  5. Enable Draw_modulation to inspect the carrier-frequency trajectory and amplitude envelope.
  6. Click OK. The output is named <source>_ringmod_<preset>.

How the modulation moves

Carrier-frequency trajectory

Carrier_frequency is calibrated as the instantaneous carrier frequency at t = 1 second from the start of the Sound. The sweep is controlled by Sweep_exponent.

Sweep exponentCarrier behaviorWhat this means
1.0FixedThe carrier stays at Carrier_frequency for the whole Sound.
1.0–2.0Rising, concave-down trajectoryThe frequency rises quickly near the beginning and then continues rising more gradually.
2.0Linear frequency riseThe carrier starts at 0 Hz, reaches Carrier_frequency at 1 s, and reaches twice that value at 2 s.
> 2.0Accelerating frequency riseThe frequency increase becomes progressively steeper. At 3.0, the instantaneous frequency follows a quadratic rise.
Important: for any exponent above 1, the carrier starts at 0 Hz. A Sound shorter than 1 second ends before the carrier reaches the entered Carrier_frequency; a longer Sound may rise far beyond it.

Amplitude envelope

Amplitude_rate sets how many gain cycles occur per second. Amplitude_center sets the middle of the gain range and Amplitude_depth sets its excursion around that center. The script clamps the depth when necessary so the resulting envelope remains within 0–1.

For example, center 0.5 and depth 0.5 produce a gain range of 0–1; center 0.8 and depth 0.2 produce a range of 0.6–1.0.

Presets

Presets override the five carrier/amplitude-modulation controls shown below. They do not override the output options: peak normalization, scale peak, playback, or visualization.

PresetCarrierExponentAM rateCenter ± depth
ManualUses the values entered in the form.
Subtle Modulation100 Hz1.51 Hz0.7 ± 0.3
Extreme Sweep500 Hz3.05 Hz0.5 ± 0.5
Fast Pulsing200 Hz2.010 Hz0.6 ± 0.4
Metallic440 Hz1.07 Hz0.8 ± 0.2
Alien Voice150 Hz2.54 Hz0.5 ± 0.5
Underwater Transmission80 Hz1.20.5 Hz0.6 ± 0.4

Parameters

ParameterDefaultWhat it controls
PresetManualSelects Manual or one of six preset parameter combinations.
Carrier_frequency250 HzInstantaneous carrier frequency at t = 1 s. With exponent 1.0 it is the fixed carrier frequency.
Sweep_exponent2Shapes the carrier-frequency trajectory. Values below 1 are clamped to 1.
Amplitude_rate3 HzRate of the post-ring-modulation amplitude envelope. Values at or above Nyquist are clamped to 99% of Nyquist.
Amplitude_center0.5Center of the gain envelope. Values are clamped to 0–1.
Amplitude_depth0.5Excursion around the center. It is reduced automatically if necessary to keep the envelope within 0–1.
Peak_normalize_outputOffIf enabled, applies target peak normalization after modulation.
Scale_peak0.99Target peak used only when normalization is enabled. Values above 1 are clamped to 1.
Play_after_processingOnPlays the processed Sound after completion.
Draw_modulationOnDraws the carrier and amplitude-control trajectories in the Picture window.

Output & channels

Aliasing: the script does not clamp the moving carrier to Nyquist. It reports when the carrier itself reaches or exceeds Nyquist. Ring-modulation sidebands also depend on the input spectrum, so high-frequency source components can alias before the carrier trajectory itself reaches Nyquist.

Visualization

When Draw_modulation is enabled, the Picture window shows the control signals rather than a waveform comparison.

The carrier plot is a control trajectory, not an output spectrum. The actual spectral result also depends on the input Sound.