stages

stages · modulation · schema v1

6-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.

A six-segment cascadable function generator after Mutable Instruments' Stages — six column strips, each an independent envelope/CV segment with its own TYPE, two knobs, a GATE input and a CV output. Each segment's TYPE button cycles RAMP (a timed slope, the knob sets TIME), HOLD (a settled level, the knob sets LEVEL) or STEP (a stepped level/sample-and-hold). The real power is LINKING: the five toggles between adjacent columns chain segments into one multi-stage shape, so e.g. a RAMP+HOLD+RAMP chain becomes a single attack-hold-release envelope. A linked chain fires from its first segment's gate, then each subsequent linked segment takes over in turn as the previous one finishes; every segment in the chain reads the chain's current value out its own CV output, so you can tap any stage. The global TRIG fires every chain's leader at once. Unlinked segments stay independent — six separate one-segment envelopes/CVs.

the faceplate

stagesgate0gategate1gategate2gategate3gategate4gategate5gatetriggateprimary0_cvcvprimary1_cvcvprimary2_cvcvprimary3_cvcvprimary4_cvcvprimary5_cvcvshape0_cvcvshape1_cvcvshape2_cvcvshape3_cvcvshape4_cvcvshape5_cvcvout0cvout1cvout2cvout3cvout4cvout5cvaudiocvgatepitch
19 inputs · 6 outputs · 23 params

inputs

idcablewhat it does
gate0gateSegment 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
gate1gateSegment 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
gate2gateSegment 3's gate — a rising edge fires segment 3, or the linked chain it leads.
gate / trigger
gate3gateSegment 4's gate — a rising edge fires segment 4, or the linked chain it leads.
gate / trigger
gate4gateSegment 5's gate — a rising edge fires segment 5, or the linked chain it leads.
gate / trigger
gate5gateSegment 6's gate — a rising edge fires segment 6, or the linked chain it leads.
gate / trigger
triggateGlobal 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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_cvcvCV 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

idcablewhat it does
out0cvSegment 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)
out1cvSegment 2's CV output — its own value, or the value of the chain it's linked into.
control voltage (CV)
out2cvSegment 3's CV output — its own value, or the value of the chain it's linked into.
control voltage (CV)
out3cvSegment 4's CV output — its own value, or the value of the chain it's linked into.
control voltage (CV)
out4cvSegment 5's CV output — its own value, or the value of the chain it's linked into.
control voltage (CV)
out5cvSegment 6's CV output — its own value, or the value of the chain it's linked into.
control voltage (CV)

params

idlabelrangedefaultcurve
type0T10..20discrete
type1T20..20discrete
type2T30..20discrete
type3T40..20discrete
type4T50..20discrete
type5T60..20discrete
primary0P1-1..10.3linear
primary1P2-1..10.3linear
primary2P3-1..10.3linear
primary3P4-1..10.3linear
primary4P5-1..10.3linear
primary5P6-1..10.3linear
shape0S10..10.5linear
shape1S20..10.5linear
shape2S30..10.5linear
shape3S40..10.5linear
shape4S50..10.5linear
shape5S60..10.5linear
link0L10..10discrete
link1L20..10discrete
link2L30..10discrete
link3L40..10discrete
link4L50..10discrete

controls

controlwhat it does
L1Link 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.
L2Link toggle between segments 2 and 3 — chains them into the same group when on.
L3Link toggle between segments 3 and 4 — chains them into the same group when on.
L4Link toggle between segments 4 and 5 — chains them into the same group when on.
L5Link toggle between segments 5 and 6 — chains them into the same group when on.
P1Segment 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).
P2Segment 2's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP).
P3Segment 3's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP).
P4Segment 4's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP).
P5Segment 5's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP).
P6Segment 6's PRIMARY fader — TIME (RAMP) or LEVEL (HOLD/STEP).
S1Segment 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.
S2Segment 2's SHAPE fader — slope curve (RAMP) or portamento glide (HOLD/STEP).
S3Segment 3's SHAPE fader — slope curve or portamento glide.
S4Segment 4's SHAPE fader — slope curve or portamento glide.
S5Segment 5's SHAPE fader — slope curve or portamento glide.
S6Segment 6's SHAPE fader — slope curve or portamento glide.
T1Segment 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.
T2Segment 2's TYPE — RAMP / HOLD / STEP, exactly as segment 1's type control.
T3Segment 3's TYPE — RAMP / HOLD / STEP.
T4Segment 4's TYPE — RAMP / HOLD / STEP.
T5Segment 5's TYPE — RAMP / HOLD / STEP.
T6Segment 6's TYPE — RAMP / HOLD / STEP.

source

stages.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo