Auto-Swell / Stereo Amplitude Modulator - User Guide
Stereo amplitude modulation for mono or stereo Sounds, with periodic, gated, stochastic, and single-arc envelopes.
What this does
Auto-Swell is a stereo amplitude modulator. It creates one modulation envelope for the left channel and one for the right channel, scales each envelope by the requested depth, multiplies the audio by those envelopes, and combines the two processed channels into a stereo Sound.
The processor accepts mono or stereo input only. Mono input is duplicated to stereo before processing. Stereo input is processed channel by channel. Sounds with more than two channels are rejected instead of silently discarding additional channels.
m(t) in the range 0...1 and depth is d in the range 0...1, the applied gain is g(t) = (1-d) + d*m(t). Therefore 0% depth gives a constant gain of 1, while 100% depth uses the raw envelope directly.Quick start
- Select exactly one mono or stereo Sound object.
- Run
Auto-Swell_v1.3.praat. - Choose a preset or use Custom.
- Set the envelope shape, rate, depth, and stereo relationship.
- Leave Normalize output on if you want the final stereo Sound peak-scaled to 0.95; turn it off if you want the modulation-induced level change preserved.
- The result is named
<source>_swell_<ShapeName>.
Normalize_output is not a limiter and is not attenuation-only. Praat's Scale peak: 0.95 scales the entire stereo result to a peak of 0.95, so it can either attenuate or amplify.Presets
Preset selections overwrite the listed parameters. Parameters not mentioned by a preset remain at their form values, but may be irrelevant to that preset's shape or stereo mode.
| Preset | Shape | Rate | Depth | Stereo behavior |
|---|---|---|---|---|
| Custom | Form setting | Form setting | Form setting | Form setting |
| Gentle Tremolo | Sine | 0.3 Hz | 50% | Identical L/R envelope |
| Fast Tremolo | Sine | 6 Hz | 70% | Identical L/R envelope |
| Rhythmic Chop | Pulse gate | 4 Hz | 100% | Identical L/R; pulse width 50% |
| Stereo Ping-Pong | Sine | 0.5 Hz | 90% | Phase offset 180° |
| Polyrhythmic Drift | Sine | 0.4 Hz | 70% | Right rate = left rate × 1.618 |
| Textural Contrast | Left: Triangle | 0.5 Hz | 80% | Right: Exponential rise |
| Single Swell | Rise-fall | Rate ignored | 95% | Identical L/R envelope |
Swell shapes
Shapes 1-9 and 11 are periodic. Shape 10 is stochastic. Shape 12 is one non-periodic arc across the entire file.
| # | Shape | Implemented envelope | Special behavior |
|---|---|---|---|
| 1 | Sine | 0.5 + 0.5*sin(2*pi*rate*t + phase) | Phase_start applies. |
| 2 | Triangle | Linear rise 0→1 over half a cycle, then fall 1→0. | Phase_start applies. |
| 3 | Sawtooth | (rate*t + phaseCycles) mod 1 | Natural rising phase; Phase_start is ignored. |
| 4 | Reverse sawtooth | 1 - ((rate*t + phaseCycles) mod 1) | Phase_start is ignored. |
| 5 | Square | 1 for first half-cycle, then 0. | Fixed 50% duty cycle; Phase_start is ignored. |
| 6 | Exponential rise | 1 - exp(-5*p), where p is cycle position. | Resets each cycle. |
| 7 | Exponential fall | exp(-5*p). | Resets each cycle. |
| 8 | S-curve | Quadratic ease-in/ease-out: 2*p^2 then 1-2*(1-p)^2. | Periodic; not a cosine curve. |
| 9 | Double peak | abs(sin(2*pi*rate*t + phase)) | Absolute value creates two peaks per nominal cycle. |
| 10 | Smoothed random | Gaussian random values around 0.5, three smoothing passes, then full-envelope normalization to 0...1. | Stochastic; no phase-addressable cycle. |
| 11 | Pulse gate | 1 while cycle position is below Pulse_width, otherwise 0. | Duty cycle is controlled by Pulse_width_percent. |
| 12 | Rise-fall envelope | One exponential rise over the first half of the file and one exponential fall over the second half. | Ignores rate, phase offset, and Phase_start. |
Stereo modes
1. Mono (same both channels)
The right modulation envelope is an exact copy of the left modulation envelope. The output is still stereo. On mono input, both audio channels are identical and remain centered. On stereo input, the source's existing L/R differences remain; they simply receive the same gain envelope.
2. Phase offset
Both channels use the same shape and rate, but the right envelope receives Phase_offset_degrees. This can create level-based left/right movement, especially when the source began as mono. Smoothed random and Rise-fall are rejected in this mode because they do not have a meaningful phase-addressable cycle.
3. Different rates
The left channel uses Swell_rate_Hz. The right channel uses Swell_rate_Hz * Right_rate_multiplier. The same shape is used on both sides. Smoothed random and Rise-fall are rejected because the mode requires a shape whose temporal behavior is meaningfully controlled by rate.
4. Different shapes
The left channel uses Swell_shape and the right channel uses Right_swell_shape, both at the left/base rate. This mode may use periodic, stochastic, or single-arc shapes. If a side uses Rise-fall, that side still ignores the rate parameter.
Parameters
| Parameter | Default | Actual behavior |
|---|---|---|
| Preset | Custom | Selects one of seven predefined configurations or leaves the form settings unchanged. |
| Swell_shape | Sine | Left/base modulation shape. |
| Swell_rate_Hz | 0.5 | Positive. Period is 1/rate. Ignored by Rise-fall. |
| Depth_percent | 80 | Validated to 0...100. Sets the modulation gain range from 1-depth to 1. |
| Stereo_mode | Phase offset | Selects the relationship between left and right modulation envelopes. |
| Phase_offset_degrees | 90 | Positive; converted to radians. Used by Phase-offset mode on periodic shapes. |
| Right_rate_multiplier | 1.5 | Positive multiplier used only by Different-rates mode. |
| Right_swell_shape | Triangle | Used only by Different-shapes mode. |
| Phase_start | Start at minimum | Applies only to Sine and Triangle. Other shapes use their natural cycle start. |
| Pulse_width_percent | 50 | Validated to 0...100; used by Pulse gate. 0% is always off before depth scaling; 100% is always on. |
| Random_smoothness | 10 | Positive. Controls the sample offset used by the three smoothing passes: round(sr/(rate*smoothness)), clamped to 2...1000 samples. |
| Normalize_output | On | If on, scales the completed stereo Sound to peak 0.95. This may amplify or attenuate. |
| Draw_visualization | On | Draws the source, L/R envelopes, result, and summary strip. |
| Play_result | On | Plays the final Sound after cleanup. |
Processing details
Visualization
The Picture window uses the Praat AudioTools standardized layout while retaining the processor-specific modulation views:
- Input waveform: the original Sound.
- L mod: the depth-scaled left modulation envelope, plotted from 0 to 1.
- R mod: the depth-scaled right modulation envelope, plotted from 0 to 1.
- Output waveform: the final stereo result after optional peak scaling.
- Summary strip: input duration/sample rate/channel count, shape/rate/depth/stereo mode, normalization state, output peak, pulse width, and random smoothness.
The waveform panels use Praat's own drawing scales; they are not a shared-amplitude before/after comparison. The modulation panels use the explicit 0...1 range.
Limits and cautions
- Input channel count: mono and stereo only. Wider multichannel files are rejected.
- Hard transitions: Square, Pulse gate, Sawtooth, and Reverse sawtooth contain discontinuities. Multiplying audio by abrupt gain changes can create broad-band sidebands or click-like transients.
- No envelope-edge smoothing: the script does not add crossfades around gate transitions.
- Smoothed random: stochastic and normalized per generated envelope; it is not phase-addressable and is therefore unavailable in Phase-offset and Different-rates modes.
- Rise-fall: always spans one arc across the entire Sound and ignores rate and phase controls.
- Phase_start scope: only Sine and Triangle use the three start-position options.
- Normalization: optional peak scaling changes overall gain after modulation; disable it when absolute level changes are part of the intended result.