cartesian

cartesian · modulation

4x4 grid sequencer. Steps via clock; X/Y CV inputs scrub freely across the grid. An upper-right S&H toggle (ON by default) bakes in a gate-sampled Sample & Hold on the pitch CV: in the clock-UNPATCHED X/Y-tracking mode the pitch+gate re-emit is suppressed while the prior gate is still high, so the pitch CV latches to the gate edge and holds (the visual playhead still tracks continuously). The clock-PATCHED mode is already gate-sampled. S&H applies to PITCH only — the free-running quadrature LFO (lfo_x/lfo_y) is never held. Turn S&H OFF for legacy continuous re-emit on every pad change.

A 4×4 grid sequencer (16 pads) that picks notes by their X/Y position rather than by a single playhead line. Each pad holds a note plus an on/off gate and an optional chord (mono / major / minor); whichever pad is currently selected is what plays. There are two ways to move across the grid, and THE CABLE CHOOSES BETWEEN THEM — there is no mode switch. Leave CLOCK IN unpatched and you are in FREEFORM: the X and Y CV inputs steer the cursor continuously, and a gate fires whenever the selected pad changes. Patch anything into CLOCK IN and you are CLOCKED: each rising edge advances the cursor one step, and an axis with no CV patched auto-increments around its 0..3 lane. Built in is a clock-locked LFO with two outputs 90° apart — patch lfo_x → x_cv and lfo_y → y_cv and the cursor draws a circle/Lissajous around the grid. The pitch output is a poly chord cable, so a polyphonic voice can play a pad's whole chord while a mono pitch input still hears just the root.

the faceplate

cartesianclockgatex_cvcvy_cvcvlfo_clockgatepitchpolyPitchGategategateclockgatelfo_xcvlfo_ycvaudiocvgatepitch
4 inputs · 5 outputs · 5 params

inputs

idcablewhat it does
clockgateStep clock for CLOCKED mode: each rising edge advances the cursor one pad (an axis with no X/Y CV patched auto-increments 0→1→2→3→0). Patching a clock here also acts as the play signal. Leave it unpatched to run in FREEFORM mode, where the X/Y CV inputs steer the cursor instead.
gate / trigger; trigger — fires once per rising edge
x_cvcvBipolar CV (-1..+1) that selects the grid COLUMN by quantizing into four equal bands (0..3). In FREEFORM mode it tracks continuously; in CLOCKED mode, if this is patched it sets the column directly while the unpatched axis auto-increments on each clock.
control voltage (CV)
y_cvcvBipolar CV (-1..+1) that selects the grid ROW the same way the X CV selects the column. Patch lfo_y here (with lfo_x → x_cv) to sweep rows in quadrature for circular cursor motion.
control voltage (CV)
lfo_clockgateTempo reference for the built-in LFO: the time between successive rising edges sets the LFO's base rate (multiplied by the Div control). It only paces the LFO outputs — it does NOT advance the grid cursor.
gate / trigger; trigger — fires once per rising edge

outputs

idcablewhat it does
pitchpolyPitchGateThe selected pad's note as pitch CV (V/oct) across the poly chord lanes; a mono pitch input automatically receives just the root note. With sample & hold on (the default) it only updates when a gate fires and holds steady on rests, so the pitch doesn't glitch as the cursor crosses silent pads.
poly pitch+gate bus; 10-channel poly bus (5 pitch + 5 gate lanes)
gategateGoes high when the selected pad changes (FREEFORM) or on each clock edge (CLOCKED), then back low after the fraction of the step set by the gate-length control — patch it into an envelope or VCA to articulate each note.
gate / trigger; gate — acts while the level is high (reacts to both edges)
clockgateA short ~10 ms pulse fired on every cursor advance, regardless of whether that pad is on or off — the 'I just stepped' signal. Patch it into another sequencer's clock in to chain them.
gate / trigger; trigger — fires once per rising edge
lfo_xcvThe built-in LFO's first phase. Its rate follows the lfo_clock input (or a default when unpatched) scaled by Div, and its shape is set by Wave. Never sample-and-held — it free-runs. Patch into x_cv for self-driven cursor motion.
control voltage (CV)
lfo_ycvThe built-in LFO's second phase, a quarter-cycle (90°) behind lfo_x. Patch lfo_x → x_cv and lfo_y → y_cv to walk the cursor in a circle/Lissajous figure across the grid.
control voltage (CV)

params

idlabelrangedefaultcurve
octaveOct-2..20discrete
gateLengthGate0.1..0.950.5linear
lfoDivDiv0..73discrete
lfoShapeWave0..30linear
snhs&h0..11discrete

controls

controlwhat it does
Cart pitch {n}Pad {n} of the 4×4 grid — its note, its gate and its chord. Type a note name into the pitch box (e.g. C3, F#4, Bb2); the box shows the canonical spelling, rings green while what you have typed is a valid note and red while it is not, and REFUSES anything outside c0..c8 rather than snapping it to the nearest legal note — a refused entry leaves the pad exactly as it was. Clearing the box is not a refusal: an empty pad is a REST, and it stays silent even when its gate is lit. The small bar above the box is the gate (click to light it); the badge below cycles the chord through mono / major / minor. When the cursor lands on this pad its note is emitted as V/oct on the PITCH output, shifted by the OCT control and, for a chord pad, used as the chord's root. On the card each pad is a note box with its gate; on the faceplate the same sixteen pads are one grid panel.
GateHow much of each step the gate stays high, from a short 10% stab to a near-legato 95%; longer values hold downstream envelopes open for most of the step.
DivDivision/multiplication of the built-in LFO relative to the lfo_clock rate, stepped through 1/8, 1/4, 1/2, 1/1, ×1.5, ×2, ×4, ×8 (default 1/1) — lower indices make the LFO sweep slowly across several clocks, higher indices run it faster than the clock.
WaveMorphs the built-in LFO waveform continuously from sine (0) through triangle (1) and sawtooth (2) to square (3), cross-fading between adjacent shapes at in-between values.
OctShifts every pad's pitch up or down by whole octaves at once (-2 to +2); chords transpose as a block so their internal intervals stay intact.
s&hSample & hold on the pitch output, on by default: when on (the card's S&H face button), in FREEFORM mode the pitch CV is rewritten only when a gate fires and otherwise holds, so the pitch doesn't smear as the cursor passes over silent pads; turn it off for continuous re-emit on every cursor move. The LFO outputs are never held.

source

cartesian.ts on GitHub.

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