Skip to content
Voro
  1. Audio
  2. Control

Envelope

Envelope is a control-signal AHDSR envelope generator: attack, hold, decay, sustain, release, rendered at sample rate as a control stream. It is not audio DSP; wire its output into any parameter that should follow a gate — filter cutoff, effect depth, a visual. Retrigger laws, looping, and ping-pong extend it from a note envelope into a cyclic modulation source.

Wire a gate or trigger source into the gate or trigger input and the value output into the parameter to modulate. Set the AHDSR stage times, choose a Retrigger law for overlapping gates, and turn Loop on to cycle the envelope while the gate is held.

  • Input 0: rate — control stream that scales stage times. Optional.
  • Input 1: phase — external phase input. Optional.
  • Input 2: trigger — fires the envelope on a rising edge. Optional.
  • Input 3: gate — holds the envelope at sustain while high, releases when it falls. Optional.
  • Output 0: value — the envelope level.
  • Output 1: phase — progress through the envelope.
  • Output 2: cycle — running cycle count when looping.
  • Output 3: pulse — fires when the envelope ends a pass.
  • Output 4: active — whether the envelope is running.
  • Attack, Hold, Decay, Sustain, Release — the AHDSR stages. Times in seconds up to 60; Sustain is a level.
  • Amount — output scale, bipolar so an envelope can also pull a value down.
  • Curve — segment curvature, from snappy exponential to slow-starting shapes.
  • Retrigger — what a new trigger does mid-flight: restart from zero, legato (ignore while running), or from_current (restart from the present level).
  • Loop — cycle the envelope instead of resting at sustain.
  • Pingpong — alternate direction when looping.
  • from_current avoids clicks when triggers arrive faster than the release finishes.
  • Loop with short stage times is an alternative LFO with an envelope’s shape vocabulary.
  • The pulse output can chain into another control op’s trigger input to build multi-stage modulation.

Inputs

  • rate row
    control_f32_v1
  • phase row
    control_f32_v1
  • trigger row
    control_f32_v1
  • gate row
    control_f32_v1

Outputs

  • value row
    control_f32_v1
  • phase row
    control_f32_v1
  • cycle row
    control_f32_v1
  • pulse row
    control_f32_v1
  • active row
    control_f32_v1
Attack (Attack) Float op('envelope').par.Attack
Default:
0.01
Range:
0 to 60
Hold (Hold) Float op('envelope').par.Hold
Default:
0
Range:
0 to 60
Decay (Decay) Float op('envelope').par.Decay
Default:
0.2
Range:
0 to 60
Sustain (Sustain) Float op('envelope').par.Sustain
Default:
0.7
Range:
0 to 1
Release (Release) Float op('envelope').par.Release
Default:
0.4
Range:
0 to 60
Amount (Amount) Float op('envelope').par.Amount
Default:
1
Range:
-16 to 16
Curve (Curve) Float op('envelope').par.Curve
Default:
1
Range:
0.05 to 8
Retrigger (Retrigger) Menu op('envelope').par.Retrigger
Default:
2
Options:
restart, legato, from_current
Loop (Loop) Toggle op('envelope').par.Loop
Default:
Off
Options:
Off, On
Pingpong (Pingpong) Toggle op('envelope').par.Pingpong
Default:
Off
Options:
Off, On