sequencer
sequencer · modulation · schema v432-step sequencer with internal BPM clock or external clock input. An upper-right S&H toggle (ON by default) bakes in a gate-sampled Sample & Hold on the pitch CV: the pitch output is (re)written only on a gated step, so it LATCHES to the gate edge and HOLDS constant between gates (no external S&H needed). Turn S&H OFF for the legacy continuous behavior where pitch can drift/reset on rests.
the faceplate
| # | control | what it does |
|---|---|---|
| 1 | Sequencer play | Play / Stop (header) — starts or stops the sequencer; starting snaps the playhead back to step 1. Same run/stop state as the isPlaying control and the transport-row PLAY. |
| 2 | Sequencer snh toggle | Sample & Hold toggle (S&H / OFF) — the button form of the snh control: on (default) latches the pitch CV to the gate edge and holds it through rests, off lets pitch run continuously. |
| 3 | Sequencer prev | Page ◀ — view the previous 16-step page of the grid; also engages HOLD so playback won't auto-scroll the view away. A marker on the arrow shows when the playhead is on a page you're not viewing. |
| 4 | Sequencer next | Page ▶ — view the next 16-step page (only when the pattern length spans more than 16 steps); also engages HOLD like the ◀ button. |
| 5 | Sequencer hold | HOLD — freezes the visible page so the grid stops auto-following the playhead across pages; off lets the view track the playing step. |
| 6 | Seq gate ×16 | Step N on/off — lit = it plays its note when the playhead reaches it; unlit = a rest (the gate stays low and, with sample & hold on, the pitch just holds the previous note). |
| 7 | Seq pitch ×16 | Step N's note — the editable pitch box for this step. Type a note name (e.g. C3, F#4, Bb2) or focus it and use the arrow keys to fly across the grid; Enter commits and jumps to the next step's box. The box shows the canonical note name, glows green while valid and red while not, and clearing it (empty) makes the step a rest even if its gate is lit. The note is emitted as V/oct on the PITCH output, shifted by the OCT control and (for a chord step) used as the chord's root; with sample & hold on it's latched to the gate so it only changes when this step actually fires. |
| 8 | Seq chord ×16 | Step N's chord mode — click to cycle mono (single note) to maj (major triad) to min (minor triad); a chord broadcasts its notes across the poly pitch lanes so a polyphonic voice plays all of them, while a mono pitch sink still hears just the root. |
| 9 | BPM | Internal tempo in beats per minute (each step is a 16th note, so the step rate is 4x the BPM), used only when nothing is patched into CLOCK IN; with an external clock patched, BPM no longer sets the pace and just feeds the gate-length math. |
| 10 | Len | How many steps the playhead walks before wrapping back to step 1; raising it past 16 reveals more pages, lowering it shortens the loop (steps beyond the length still hold their notes but are skipped and shown dimmed). |
| 11 | Oct | Shifts every step's pitch up or down by whole octaves at once (-2 to +2); chords transpose as a block so their internal intervals stay intact. |
| 12 | Gate | How much of each step the gate stays high, from a short 10% stab to a near-legato 95% (it always closes just before the next step, never overlapping it); longer values keep envelopes open most of the step. |
| 13 | Sw | Shuffles the rhythm by lengthening the on-beat steps and shortening the off-beat steps that follow them, which pushes every off-beat later for a looser feel; 0 is dead-straight, higher values deepen the shuffle. Internal-clock only (an external clock sets its own timing). |
| 14 | Quicksave slot ×8 | Pattern slot N of 8 — what a click does depends on the armed mode button: SAVE writes the current pattern (steps + BPM/length/octave/gate/swing) into this slot, LOAD switches to it instantly, and QUEUE waits until the current loop finishes and then swaps to it; a filled slot shows differently from an empty one. |
| 15 | Quicksave mode save | SAVE arm — click it, then click a slot 1–8 to write the current pattern (steps + BPM/length/octave/gate/swing) into that slot. |
| 16 | Quicksave mode load | LOAD arm — click it, then click a slot to switch to that saved pattern instantly. |
| 17 | Quicksave mode queue | QUEUE arm — click it, then click a slot to queue that pattern; the swap happens cleanly at the end of the current loop instead of immediately. |
| 18 | Quicksave play | Play / Stop (transport row) — same run/stop control as the header PLAY button. |
| 19 | Quicksave reset | Reset — snaps the playhead back to step 1 without stopping playback. |
inputs
| id | cable | what it does |
|---|---|---|
play_cv | gate | A rising edge toggles play/stop (each pulse flips the current run state); when patched it takes priority over the clock-as-play behavior. gate / trigger |
reset_cv | gate | A rising edge snaps the playhead back to step 1 and restarts the loop. If the sequence happens to be wrapping to step 1 on its own right then, the reset is a no-op so you don't get a doubled downbeat. gate / trigger |
queue1_cv | gate | A rising edge queues pattern slot 1: it finishes the current loop, then switches to slot 1 and restarts from step 1. An explicit slot queue overrides any pending next/prev/random navigation. gate / trigger |
queue2_cv | gate | A rising edge queues pattern slot 2 — applied at the end of the current loop, then plays slot 2 from step 1 (does nothing if slot 2 is empty). gate / trigger |
queue3_cv | gate | A rising edge queues pattern slot 3 — applied at the end of the current loop, then plays slot 3 from step 1 (does nothing if slot 3 is empty). gate / trigger |
queue4_cv | gate | A rising edge queues pattern slot 4 — applied at the end of the current loop, then plays slot 4 from step 1 (does nothing if slot 4 is empty). gate / trigger |
queue5_cv | gate | A rising edge queues pattern slot 5 — applied at the end of the current loop, then plays slot 5 from step 1 (does nothing if slot 5 is empty). gate / trigger |
queue6_cv | gate | A rising edge queues pattern slot 6 — applied at the end of the current loop, then plays slot 6 from step 1 (does nothing if slot 6 is empty). gate / trigger |
queue7_cv | gate | A rising edge queues pattern slot 7 — applied at the end of the current loop, then plays slot 7 from step 1 (does nothing if slot 7 is empty). gate / trigger |
queue8_cv | gate | A rising edge queues pattern slot 8 — applied at the end of the current loop, then plays slot 8 from step 1 (does nothing if slot 8 is empty). gate / trigger |
next_cv | gate | A rising edge latches a 'move to the next filled slot' request that is applied at the end of the current loop (quantized, not instant); it skips empty slots and wraps around. A later explicit slot queue cancels it; a later nav pulse replaces it. gate / trigger |
prev_cv | gate | A rising edge latches a 'move to the previous filled slot' request, applied at the end of the current loop (skips empties, wraps around). gate / trigger |
random_cv | gate | A rising edge latches a 'jump to a random filled slot' request, applied at the end of the current loop. gate / trigger |
clock | gate | External clock: each rising edge advances the playhead exactly one step. While anything is patched here the internal BPM is ignored and the incoming pulses set the pace; unpatch to fall back to the BPM clock. Patching a clock alone also runs the sequencer (the pulses act as the play signal). gate / trigger |
outputs
| id | cable | what it does |
|---|---|---|
pitch | polyPitchGate | The current step'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 on steps that fire and holds steady through rests, so a held note doesn't glitch. poly pitch+gate bus; 10-channel poly bus (5 pitch + 5 gate lanes) |
gate | gate | Goes high while a lit step is playing (high if any chord note fires this step) and low on rests; how long it stays high within the step is set by the gate-length control — patch this into an envelope or VCA to shape each note. gate / trigger |
clock | gate | A short ~10 ms pulse fired on every step advance, regardless of whether that step is on or off — it's the 'I just stepped' signal. Patch it into another sequencer's CLOCK IN to chain them in lockstep. gate / trigger |
params
| id | label | range | default | curve |
|---|---|---|---|---|
bpm | BPM | 30..300 | 120 | linear |
length | Len | 1..128 | 16 | discrete |
octave | Oct | -2..2 | 0 | discrete |
gateLength | Gate | 0.1..0.95 | 0.5 | linear |
swing | Sw | 0..0.75 | 0 | linear |
isPlaying | Play | 0..1 | 0 | discrete |
snh | s&h | 0..1 | 1 | discrete |
source
sequencer.ts on GitHub.