stages
stages · modulation · schema v16-segment cascadable function generator (Mutable Instruments Stages archetype, Émilie Gillet, 2017, MIT-licensed). Each segment selects a TYPE — RAMP (phase 0→1 over TIME seconds, shape-warped via the Tides-style curve from the C++ segment_generator), HOLD (constant LEVEL with shape-controlled portamento), or STEP (sample-and-hold of LEVEL on each gate rising edge). Adjacent segments can be LINKed via 5 boundary toggles to form multi-stage envelopes: a single RAMP→HOLD→RAMP chain reproduces an AHD envelope; chaining all 6 segments builds an AHDSR or arbitrary multi-stage curve. The leader segment of each chain group fires on its own GATE input; subsequent linked segments take over in sequence as each completes. A global TRIG input fires every chain group's leader at once. Each segment has its own CV output that mirrors its chain's current value, so any segment can be tapped. v1 ships TYPE + LINK + GATE + TRIG + per-segment CV inputs for primary + shape; Outliner / chord mode, the all-STEP tap-tempo grid mode, and looping LFO mode (with rate CV) are deferred to follow-up PRs.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
gate0 | gate | Segment 1's gate: a rising edge fires this segment (or, when it's a chain leader, the whole linked chain that starts here). For a HOLD/STEP segment the held level latches; for a RAMP it starts the timed slope. gate / trigger |
gate1 | gate | Segment 2's gate — fires segment 2 (or the chain it leads) on a rising edge. When segment 2 is linked to segment 1, segment 1's chain hands off to it automatically and this input is the manual re-fire. gate / trigger |
gate2 | gate | Segment 3's gate — a rising edge fires segment 3, or the linked chain it leads. gate / trigger |
gate3 | gate | Segment 4's gate — a rising edge fires segment 4, or the linked chain it leads. gate / trigger |
gate4 | gate | Segment 5's gate — a rising edge fires segment 5, or the linked chain it leads. gate / trigger |
gate5 | gate | Segment 6's gate — a rising edge fires segment 6, or the linked chain it leads. gate / trigger |
trig | gate | Global trigger: a rising edge fires the leader (first segment) of every chain group at once, so one pulse re-triggers all six segments / all linked envelopes together. gate / trigger |
primary0_cv | cv | CV that displaces segment 1's PRIMARY knob (its TIME for RAMP, or LEVEL for HOLD/STEP) around the knob position. control voltage (CV); modulates primary0 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
primary1_cv | cv | CV that displaces segment 2's PRIMARY knob (TIME or LEVEL) around the knob position. control voltage (CV); modulates primary1 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
primary2_cv | cv | CV that displaces segment 3's PRIMARY knob (TIME or LEVEL) around the knob position. control voltage (CV); modulates primary2 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
primary3_cv | cv | CV that displaces segment 4's PRIMARY knob (TIME or LEVEL) around the knob position. control voltage (CV); modulates primary3 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
primary4_cv | cv | CV that displaces segment 5's PRIMARY knob (TIME or LEVEL) around the knob position. control voltage (CV); modulates primary4 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
primary5_cv | cv | CV that displaces segment 6's PRIMARY knob (TIME or LEVEL) around the knob position. control voltage (CV); modulates primary5 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape0_cv | cv | CV that displaces segment 1's SHAPE knob (slope curve for RAMP, portamento glide for HOLD/STEP). control voltage (CV); modulates shape0 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape1_cv | cv | CV that displaces segment 2's SHAPE knob (slope curve or portamento). control voltage (CV); modulates shape1 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape2_cv | cv | CV that displaces segment 3's SHAPE knob (slope curve or portamento). control voltage (CV); modulates shape2 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape3_cv | cv | CV that displaces segment 4's SHAPE knob (slope curve or portamento). control voltage (CV); modulates shape3 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape4_cv | cv | CV that displaces segment 5's SHAPE knob (slope curve or portamento). control voltage (CV); modulates shape4 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
shape5_cv | cv | CV that displaces segment 6's SHAPE knob (slope curve or portamento). control voltage (CV); modulates shape5 (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
out0 | cv | Segment 1's CV output — its own value when unlinked, or the current value of the chain it belongs to when linked (so any segment in a chain mirrors the chain's running envelope). control voltage (CV) |
out1 | cv | Segment 2's CV output — its own value, or the value of the chain it's linked into. control voltage (CV) |
out2 | cv | Segment 3's CV output — its own value, or the value of the chain it's linked into. control voltage (CV) |
out3 | cv | Segment 4's CV output — its own value, or the value of the chain it's linked into. control voltage (CV) |
out4 | cv | Segment 5's CV output — its own value, or the value of the chain it's linked into. control voltage (CV) |
out5 | cv | Segment 6's CV output — its own value, or the value of the chain it's linked into. control voltage (CV) |
params
| id | label | range | default | curve |
|---|---|---|---|---|
type0 | T1 | 0..2 | 0 | discrete |
type1 | T2 | 0..2 | 0 | discrete |
type2 | T3 | 0..2 | 0 | discrete |
type3 | T4 | 0..2 | 0 | discrete |
type4 | T5 | 0..2 | 0 | discrete |
type5 | T6 | 0..2 | 0 | discrete |
primary0 | P1 | -1..1 | 0.3 | linear |
primary1 | P2 | -1..1 | 0.3 | linear |
primary2 | P3 | -1..1 | 0.3 | linear |
primary3 | P4 | -1..1 | 0.3 | linear |
primary4 | P5 | -1..1 | 0.3 | linear |
primary5 | P6 | -1..1 | 0.3 | linear |
shape0 | S1 | 0..1 | 0.5 | linear |
shape1 | S2 | 0..1 | 0.5 | linear |
shape2 | S3 | 0..1 | 0.5 | linear |
shape3 | S4 | 0..1 | 0.5 | linear |
shape4 | S5 | 0..1 | 0.5 | linear |
shape5 | S6 | 0..1 | 0.5 | linear |
link0 | L1 | 0..1 | 0 | discrete |
link1 | L2 | 0..1 | 0 | discrete |
link2 | L3 | 0..1 | 0 | discrete |
link3 | L4 | 0..1 | 0 | discrete |
link4 | L5 | 0..1 | 0 | discrete |
controls
| control | what it does |
|---|---|
| L1 | Link toggle between segments 1 and 2 — when on, they chain into one multi-stage shape (segment 1 hands off to segment 2 as it finishes); off keeps them independent. |
| L2 | Link toggle between segments 2 and 3 — chains them into the same group when on. |
| L3 | Link toggle between segments 3 and 4 — chains them into the same group when on. |
| L4 | Link toggle between segments 4 and 5 — chains them into the same group when on. |
| L5 | Link toggle between segments 5 and 6 — chains them into the same group when on. |
| P1 | Segment 1's PRIMARY fader — TIME when the segment is a RAMP (how long the slope takes), or LEVEL when it's HOLD/STEP (the target value, bipolar -1..+1). |
| P2 | Segment 2's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP). |
| P3 | Segment 3's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP). |
| P4 | Segment 4's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP). |
| P5 | Segment 5's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP). |
| P6 | Segment 6's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP). |
| S1 | Segment 1's SHAPE fader — the slope curve for a RAMP (from logarithmic through linear to exponential), or the portamento glide time for a HOLD/STEP segment. |
| S2 | Segment 2's SHAPE fader — slope curve (RAMP) or portamento glide (HOLD/STEP). |
| S3 | Segment 3's SHAPE fader — slope curve or portamento glide. |
| S4 | Segment 4's SHAPE fader — slope curve or portamento glide. |
| S5 | Segment 5's SHAPE fader — slope curve or portamento glide. |
| S6 | Segment 6's SHAPE fader — slope curve or portamento glide. |
| T1 | Segment 1's TYPE — cycles RAMP (a timed slope, the knob below becomes TIME), HOLD (a steady level, the knob becomes LEVEL) or STEP (a stepped level / sample-and-hold). The card's column button cycles it. |
| T2 | Segment 2's TYPE — RAMP / HOLD / STEP, exactly as segment 1's type control. |
| T3 | Segment 3's TYPE — RAMP / HOLD / STEP. |
| T4 | Segment 4's TYPE — RAMP / HOLD / STEP. |
| T5 | Segment 5's TYPE — RAMP / HOLD / STEP. |
| T6 | Segment 6's TYPE — RAMP / HOLD / STEP. |
source
stages.ts on GitHub.