gatemaiden

gatemaiden · utility · schema v1

Single-input gate↔trigger converter — the convenience utility for the trigger/gate model (think Doepfer A-162 / Make Noise Maths EOR-EOC in one small module). ONE generic CV input (IN) accepts EITHER a gate or a trigger, and produces BOTH a GATE output and a TRIG output, derived from the input's level + rising edges (no mode switch — like Maths, it always emits both). GATE out is a held square that stays high while the input is high, with a MINIMUM width of the Len knob (0.005–2 s, default 50 ms): so a long gate passes through duration-matched, while a short TRIGGER in is widened into a clean usable gate (trigger→gate). TRIG out fires a short pulse on EVERY rising edge of the input: so a GATE in yields one trigger per gate START (gate→trigger), and a TRIGGER in is effectively reshaped through (one pulse per input pulse). The Shape button picks the emitted trigger waveform — △ triangle (default, a 5 ms ramp-up/ramp-down strike) or ▭ square. In the trigger/gate model: ▷ marks the trigger output, ▭ the gate ports. Why you want it: anything that must START an event should be a trigger (edge-fired once), anything that must SUSTAIN should be a gate (level-held); GATEMAIDEN lets you convert freely between the two when you cross-patch — e.g. take a sequencer's held step-gate and get a clean clock trigger out of its starts, or take a drum trigger and open an ADSR's sustain with a real gate. Sample-accurate DSP (pure core in packages/dsp/src/lib/gatemaiden-dsp.ts), so it single-fires by construction.

The convenience converter between the two interpretations of the unified gate cable: a TRIGGER (a brief blip that fires once on each rising edge — a clock tick, a strike) and a GATE (a held level that stays high while something is on — a note being held, an envelope's sustain). One generic input feeds BOTH outputs simultaneously, with no mode switch: GATE reads the input's level (and a passing trigger is widened into a minimum-width gate set by LEN), while TRIG fires one short pulse on every rising edge of the input (so a held gate becomes a single trigger at its start). Use it to make an external clock open an ADSR's sustain, or to turn a long held gate back into a one-shot strike, or just to fan one signal out as both shapes at once.

the faceplate

gatemaideningategategatetriggateaudiocvgatepitch
1 inputs · 2 outputs · 2 params

inputs

idcablewhat it does
ingateThe signal to convert (accepts a gate, a trigger, or any CV/pitch). Its level drives the GATE output while its rising edges drive the TRIG output. A trigger arriving here is stretched up to LEN on GATE; a held gate here passes through on GATE and emits one trigger on TRIG when it goes high.
gate / trigger; gate — acts while the level is high (reacts to both edges); also accepts: control voltage (CV), V/oct pitch CV

outputs

idcablewhat it does
gategateA held gate that stays high while the input is high, but never shorter than the LEN time — so even a momentary trigger on the input produces a usably-wide held gate here. Patch it into anything level-sensitive (an ADSR sustain, a VCA hold).
gate / trigger; gate — acts while the level is high (reacts to both edges)
triggateA short fixed-width pulse that fires once on each rising edge of the input — the trigger form. A long held gate on the input yields a single trigger here at its start, not a continuous level.
gate / trigger; trigger — fires once per rising edge

params

idlabelrangedefaultcurve
gateLenLen0.005..2s0.05log
trigShapeShape0..10discrete

controls

controlwhat it does
LenThe minimum width of the GATE output (5 ms to 2 s, log), used when the input is a short trigger: the gate is held at least this long after the strike. With a genuinely held input gate this just sets the floor; the gate otherwise follows the input level.
ShapeThe waveform of the TRIG output pulse — toggles between a short triangle (TRI, the gentle default) and a hard square (SQR). Display/feel only; both fire once per rising edge with the same canonical pulse width.

source

gatemaiden.ts on GitHub.

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