WaveStack is on the iOS App Store

Swell

Ping-driven envelope generator for VCV Rack

The Swell module panel in VCV Rack.

Swell is a ping-driven envelope generator. Each rising edge on the PING input adds a voltage rise of a size you set to the current envelope value, and the envelope then decays back toward zero. Rises from several pings add together, so a stream of triggers builds up a slow swell and a single ping produces a single sharp attack.

A typical AD or AR envelope produces one ramp of a fixed shape for each gate. Swell instead adds up the rises from every trigger and lets the total decay continuously. The output is a single 0-10V CV that saturates softly near the 10V ceiling, and it does not decay while any rise is still in progress. Swell is 6 HP.


How it works

Ping → rise → decay

A PING trigger queues a new rise contribution. Each rise adds the current Delta voltage over the current Rise time. Up to 32 rises can be in progress at once, and their contributions add together. While any rise is still in progress, decay is paused so that the rise reaches its full value. Once all rises are complete, the envelope decays back toward 0V over the Fall time.

Soft saturation

The output ceiling is 10V, but rather than hard-clipping, Swell scales each rise contribution by (10 - V) / 10 as it approaches the ceiling. Pings that arrive while the envelope is already high therefore add proportionally less, so the voltage approaches 10V more and more slowly instead of stopping abruptly at a hard limit.

Curve

The Curve control blends between two rate models, applied to both rises and decay:

  • Linear (Curve = 0): rises add at a constant rate over the rise time, and decay subtracts at a constant rate over the fall time.
  • Exponential (Curve = 1): rises add in proportion to the remaining headroom, so they are fast at first and slow down as they complete. Decay subtracts in proportion to the current voltage, which gives a standard exponential decay with a time constant.

Settings in between mix the two rates. The linear setting produces straight-line ramps like a basic AD envelope, and the exponential setting produces the curved segments typical of analogue envelope circuits.


The display

The scope shows a 1.2-second window: 600 ms of past samples drawn left of center, the current voltage at center (orange dot), and 600 ms of projected future drawn right of center (faint blue). The future trace is calculated from the current rise queue and decay settings, so when you turn a knob the projection updates immediately to show what the envelope will do next. Gridlines mark 0 V, 5 V and 10 V, and the exact current voltage is shown as text in the top-right corner.


Controls

ControlRangeDefaultFunction
Delta0-10 V5 VSets the voltage added per ping
Rise1 ms to 2 s~10 msSets the time each rise takes to add its full Delta
Fall10 ms to 10 s~316 msSets the time the envelope takes to decay back to 0
CurveLinear → Exponential50% expBlends between linear and exponential rate models

All four parameters accept ±5V CV with ±50% range, summed with the knob position.

Inputs

InputFunction
PINGA rising edge queues a new rise at the current Delta and Rise time
RESETA rising edge sets the envelope to zero and cancels all rises in progress
Delta CV±5V → ±50% of Delta param
Rise CV±5V → ±50% of Rise param
Fall CV±5V → ±50% of Fall param
Curve CV±5V → ±50% of Curve param

Outputs

OutputFunction
CVThe 0-10V envelope, which saturates softly near the ceiling

Patch ideas

Slow swell from a clock: Patch a clock to PING and set Delta low (about 0.1, or 1V), Rise short (10 ms), Fall long (5-10 s) and Curve high. Each clock tick adds a small step, so the envelope climbs steadily and decays slowly between ticks. The faster the clock, the higher the voltage at which rises and decay balance out.

Velocity-sensitive trigger: Patch a trigger source to PING and an envelope or LFO to Delta CV. Each ping uses the value of Delta at the moment it arrives, so pings that arrive while Delta CV is low produce small rises and pings that arrive while it is high produce larger ones.

Crescendo detector: Convert audio peaks to triggers with a comparator and feed them to PING. Sparse peaks keep the envelope low, and dense peaks build it up, so the envelope rises and falls with how busy the audio is. Patch CV to a filter cutoff or a VCA to make the patch respond to crescendos in the audio.

Multi-tap envelope: Send the same trigger through several delays of different lengths into a mixer, then to PING. Each delayed copy starts its own rise, and the rises add up to a multi-stage attack whose steps fall at the delay times.

Smoothed random walk: Patch a Bernoulli gate or another random trigger source to PING, and modulate Delta CV with a slow LFO. The envelope rises by irregular amounts at irregular times and decays back toward 0 between bursts.

RESET as hard mute: With a long Fall time, the envelope can take several seconds to return to zero. Patch a manual button or an end-of-phrase trigger to RESET to set the envelope to zero immediately and cancel any pending rises.

In the synthesis guide

Pair with