Panning Variations — User Guide

Create stereo motion from a mono working source using sweeps, sine-based auto-pan, ping-pong motion, stochastic random walk, expanding or contracting motion, static placement, or equal-channel tremolo.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.4.2 (2026) Praat
Contents:

What this does

Panning Variations creates a two-channel output by first deriving a mono working source and then applying independent left/right gain automation. A mono input is copied; any input with more than one channel is converted to mono before panning. The original Sound is not modified.

Important input behavior: stereo and other multichannel inputs are not spatially remixed in their original form. They are first downmixed to mono, then re-panned as a new stereo signal.

Quick start

  1. Select exactly one Sound.
  2. Run Panning_variations.praat.
  3. Choose a Panning_pattern.
  4. Set Min_pan and Max_pan to define the allowed stereo range.
  5. For cyclic pan patterns, set Number_of_cycles. For Tremolo, set Motion_speed_(Hz).
  6. Choose constant-power or linear panning, then run the script.
Output naming: the result is named original_pan_pattern, for example voice_pan_SinePan or voice_pan_Random.

Panning patterns

PatternMotionActive motion parameterOutput suffix
Linear Sweep (L → R)One linear traversal from the low end of the selected pan range to the high end across the full Sound duration.NoneSweepLR
Linear Sweep (R → L)One linear traversal in the opposite direction.NoneSweepRL
Sine Auto-PanSinusoidal motion across the selected pan range.Number_of_cyclesSinePan
Double-Rate Sine Auto-PanThe same sine trajectory at twice the ordinary sine rate. With Number_of_cycles = 2, four sine cycles occur across the Sound.Number_of_cyclesDoubleSinePan
Ping-Pong (bounce)Triangle-wave motion that repeatedly travels between the two ends of the selected pan range.Number_of_cyclesPingPong
Random WalkStochastic position/velocity walk with damping and edge reflection, then mapped into the selected pan range.Neither Speed nor CyclesRandom
Expanding Sine Auto-PanStarts at the centre of the selected range and gradually increases sine excursion toward the full range.Number_of_cyclesExpandPan
Contracting Sine Auto-PanStarts with full-range sine excursion and gradually contracts toward the centre.Number_of_cyclesContractPan
Tremolo (both channels)No left/right motion in the audio. L and R receive the same sinusoidal gain from 0 to 1.Motion_speed_(Hz)Tremolo
Static PositionFixed pan value mapped through the selected Min/Max range.Static_positionStatic
Random Walk is intentionally non-reproducible in the current form. The script uses Praat random draws but exposes no seed control. Curve_resolution also affects the number and temporal spacing of random-walk updates.

Panning laws

Constant-power panning

angle = pan × π/2
L = cos(angle)
R = sin(angle)

This keeps L² + R² = 1 before the later peak normalization.

Linear panning

L = 1 - pan
R = pan

At the centre, both channels are 0.5 before final normalization.

For all panning patterns except Tremolo, Use_constant_power selects between these laws. Tremolo bypasses the pan-law gain calculation and sets both channels to the same tremolo value.

Near-zero floor: before conversion to IntensityTier dB, gains below 0.001 are raised to 0.001. Therefore a nominal hard-left or hard-right position leaves the opposite channel at approximately −60 dB relative to unity rather than mathematical zero.

Parameters

ParameterDefaultActual behavior
Panning_patternLinear Sweep (L → R)Selects one of the 10 patterns above.
Motion_speed_(Hz)1.0Used by Tremolo. Sweeps, Static, Random Walk, and cycle-based pan patterns do not use it.
Number_of_cycles2.0Used by Sine Auto-Pan, Double-Rate Sine Auto-Pan, Ping-Pong, Expanding Sine Auto-Pan, and Contracting Sine Auto-Pan.
Min_pan0.0Lower endpoint of the allowed pan range. Clamped to [0,1].
Max_pan1.0Upper endpoint. Clamped to [0,1]. If Min exceeds Max after clamping, the two are swapped.
Static_position0.5Normalized position used by Static mode before mapping through the Min/Max range; final pan is clamped to [0,1].
Curve_resolution200Number of automation intervals. The script creates resolution + 1 tier points over the Sound duration.
Use_constant_poweryesSelects constant-power vs. linear gain law for panning modes. It does not affect Tremolo audio.
Draw_visualizationyesDraws pan position, actual L/R automation gains, output waveform, and summary.
Play_resultyesPlays the completed stereo Sound.

Processing pipeline

1. Require exactly one selected Sound.
2. Read duration, sample rate, and channel count.
3. Clamp/sort Min_pan and Max_pan.
4. Convert multichannel input to mono, or copy mono input.
5. Sample the selected motion at Curve_resolution + 1 times.
6. Map each pan value into the Min/Max range and clamp to [0,1].
7. Calculate L/R gains; Tremolo instead assigns one equal gain to both channels.
8. Floor gains at 0.001 and convert them to IntensityTier dB values around Praat's 70 dB unity reference.
9. Multiply two mono copies by the left and right tiers.
10. Combine them to stereo.
11. Apply Scale peak: 0.99 unconditionally.
12. Remove intermediate objects and optionally draw/play the result.
Normalization behavior: Scale peak: 0.99 is full peak normalization, not merely a clipping ceiling. It can either attenuate or amplify the completed result so that its absolute peak becomes 0.99.

Visualization

When Draw_visualization is enabled, the script draws four process-focused regions:

Tremolo display: its Pan Position curve remains fixed at the mapped centre because Tremolo is not spatial motion; the meaningful motion appears in the L/R Gain panel, where both gains move together.

Practical use

Sweeps and ping-pong

Use for clear left/right gestures, transitions, alternating motion, and spatial articulation of mono material.

Sine auto-pan

Use cycle count to define repeated periodic motion over the exact Sound duration rather than an independent Hz rate.

Expanding / contracting

Useful when the stereo excursion itself should evolve over time while retaining a sine trajectory.

Random Walk

Creates a different stochastic pan path on each run; use a narrower Min/Max range when full-width wandering is too extreme.

Tremolo

Applies equal amplitude modulation to both output channels. It is included in the tool as a gain-variation mode, not a panning trajectory.

Static Position

Places the mono working source at one fixed stereo position using the same selected pan law as the moving panning modes.