macseq
macseq · modulation · schema v116-step sequencer with a per-step MACROOSCILLATOR voice picker. Each step carries an on/off gate, a MIDI note, and a synthesis-model index. Outputs PITCH (V/oct), GATE (fires on every on-step), CLOCK (a 10 ms pulse per advance for chaining), and MODELCV — a CV cable carrying the step's selected model index, rescaled into the project's bipolar ±1 convention so it lands on MACROOSCILLATOR's discrete model_cv input and reconstructs the integer at the other end. Empty model steps hold the last emitted model (the first emit defaults to model 0 / VA), so sparser patterns "leave it where it was." Lets one sequencer drive both the pitch and the timbre/engine of a MACROOSCILLATOR voice.
the faceplate
14 inputs · 4 outputs · 5 params
inputs
| id | cable | what it does |
|---|---|---|
play_cv | gate | A rising edge toggles play/stop (each pulse flips the run state). gate / trigger |
reset_cv | gate | A rising edge snaps the playhead back to step 1 and restarts the loop. gate / trigger |
queue1_cv | gate | A rising edge queues pattern slot 1 — applied at the end of the current loop, then plays it from step 1 (no-op if empty). gate / trigger |
queue2_cv | gate | A rising edge queues pattern slot 2 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue3_cv | gate | A rising edge queues pattern slot 3 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue4_cv | gate | A rising edge queues pattern slot 4 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue5_cv | gate | A rising edge queues pattern slot 5 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue6_cv | gate | A rising edge queues pattern slot 6 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue7_cv | gate | A rising edge queues pattern slot 7 — applied at the end of the current loop (no-op if empty). gate / trigger |
queue8_cv | gate | A rising edge queues pattern slot 8 — applied at the end of the current loop (no-op if empty). gate / trigger |
next_cv | gate | A rising edge latches a 'move to the next filled slot' request applied at the end of the current loop (quantized, not instant); it skips empty slots and wraps around. 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). 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 (and run the sequencer); unpatch to fall back to the BPM clock. gate / trigger |
outputs
| id | cable | what it does |
|---|---|---|
pitch | pitch | The current step's note as pitch CV (V/oct), transposed by the octave control; falls back to C3 when a step has no note. V/oct pitch CV |
gate | gate | Goes high on each ON step and low on rests or when stopped; how long it stays high within the step is set by the gate-length control — patch into an envelope or VCA. gate / trigger |
modelcv | cv | The current step's MACROOSCILLATOR model index as CV — patch into a macrooscillator's model_cv input to switch its synthesis engine per step. A step with no model set holds the previously emitted index, so the sound only changes when you change it. control voltage (CV) |
clock | gate | A short ~10 ms pulse on every step advance, regardless of whether the step is on — chain it into another sequencer's clock in. 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 |
isPlaying | Play | 0..1 | 0 | discrete |
controls
| control | what it does |
|---|---|
| BPM | Internal tempo in beats per minute (each step is a 16th note, so the step rate is 4× the BPM), used only when nothing is patched into CLOCK IN. |
| 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). |
| Play | The run/stop state: 1 plays, 0 stops and forces the gate low; starting playback snaps the playhead back to step 1. Same control as the card's PLAY button. (An external clock can drive stepping even while this reads stopped.) |
| Len | How many steps the playhead walks before wrapping to step 1; raising it past 16 reveals more pages, lowering it shortens the loop. |
| Macseq model {n} | Step {n}'s MODEL — the per-step value-entry dropdown that picks which MACROOSCILLATOR engine this step selects (— = unset, otherwise a model name). The chosen model index is emitted on the MODEL CV output, made to land on MACROOSCILLATOR's discrete model_cv input; an unset (—) step HOLDS the previous step's model rather than snapping to model 0, so you only switch engines on the steps you mark. |
| Macseq pitch {n} | 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 makes the step play the C3 fallback. The note is emitted as V/oct on the PITCH output, shifted by the OCT control — patch PITCH into a MACROOSCILLATOR's pitch input. |
| Oct | Shifts every step's pitch up or down by whole octaves at once (-2 to +2). |
source
macseq.ts on GitHub.