numpad+
numpadPlus · sourcesNumpad-driven 4-layer × 16-step sequencer + live keyboard. Each numpad note key fires the active layer's pitch+gate immediately AND, when REC ARM (one-pass record on next play-from-start) or OVERDUB (always-recording) is on, writes the note to the nearest step on the active layer. Default keymap: 1=C, 2=C#, 3=D, 4=D#, 5=E, 6=F, 7=F#, 8=G, 9=G#, 0=A, /=A#, *=B, with Numpad+ / Numpad- bound to OCTAVE UP / OCTAVE DOWN. All fourteen bindings are REMAPPABLE to any physical key — left-click a key cap on the faceplate (or right-click for the Remap / Reset menu) and press the key you want — and the map is saved with the patch, per node. Octave 0-8 (named c0..c8 by the note the first key plays) also moves from the faceplate. CV inputs: clock (rising-edge external clock — internal BPM ignored while patched) + layer (unipolar 0..1 CV selecting the active layer, otherwise the activeLayer param wins). CV outputs: l1_pitch / l1_gate ... l4_pitch / l4_gate so a patch can route each layer to its own downstream synth — basically a 4-track sequencer — plus a POLY bus carrying the active layer's voices for a poly-aware voice, NINE outputs in total. When this module exists in the rack its keyboard listener captures whatever event.codes its keymap binds and preventDefaults them, so other modules never see those keys; text fields and a focused DOOM card are excluded. The listener lives in the module itself rather than on any card, so it works with no UI open.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
clock | gate | External clock: each rising edge advances the shared playhead one step. While patched it sets the pace and runs the sequencer; unpatch to fall back to the internal BPM. gate / trigger; trigger — fires once per rising edge |
layer | cv | CV that selects the active layer (0..1 mapped to layers 1–4); when patched it takes priority over the Layer control, so you can switch which line you're recording/playing from a CV source. control voltage (CV) |
outputs
| id | cable | what it does |
|---|---|---|
l1_pitch | pitch | Layer 1's pitch CV (V/oct): the current step's note, or the live-held key's pitch when you're playing on layer 1. V/oct pitch CV |
l1_gate | gate | Layer 1's gate: high on a lit step (or while a key is held on layer 1), low otherwise. gate / trigger; gate — acts while the level is high (reacts to both edges) |
l2_pitch | pitch | Layer 2's pitch CV (V/oct): its current step's note, or a live-held key when layer 2 is active. V/oct pitch CV |
l2_gate | gate | Layer 2's gate: high on a lit step or held key, low otherwise. gate / trigger; gate — acts while the level is high (reacts to both edges) |
l3_pitch | pitch | Layer 3's pitch CV (V/oct): its current step's note, or a live-held key when layer 3 is active. V/oct pitch CV |
l3_gate | gate | Layer 3's gate: high on a lit step or held key, low otherwise. gate / trigger; gate — acts while the level is high (reacts to both edges) |
l4_pitch | pitch | Layer 4's pitch CV (V/oct): its current step's note, or a live-held key when layer 4 is active. V/oct pitch CV |
l4_gate | gate | Layer 4's gate: high on a lit step or held key, low otherwise. gate / trigger; gate — acts while the level is high (reacts to both edges) |
poly | polyPitchGate | The ACTIVE layer's notes as a POLY cable (up to 5 voices, each with its own pitch CV + gate): in poly mode this carries the held/recorded chord, otherwise the single current note. Patch into a poly-aware voice (DX7 / CUBE / any module with a poly input) so every voice sounds; a mono pitch input automatically receives just the lowest (root) note. poly pitch+gate bus; 10-channel poly bus (5 pitch + 5 gate lanes) |
params
| id | label | range | default | curve |
|---|---|---|---|---|
bpm | BPM | 30..300 | 120 | linear |
isPlaying | Play | 0..1 | 0 | discrete |
activeLayer | Lyr | 0..3 | 0 | discrete |
recArm | Rec | 0..1 | 0 | discrete |
overdub | Ovd | 0..1 | 0 | discrete |
octave | Oct | ?..? | 4 | discrete |
poly | Poly | 0..1 | 0 | discrete |
controls
| control | what it does |
|---|---|
| Lyr | Which of the four layers is active for playing and recording (0..3 = layers 1–4), exposed as the card's L1–L4 buttons. The layer CV input overrides this when patched. |
| BPM | Internal tempo in beats per minute (each step is a 16th note), used only when nothing is patched into CLOCK IN. |
| Play | Run/stop transport (1 = playing, 0 = stopped). When stopped the playhead holds at step 1 but live keys still sound; the card's PLAY button toggles it. |
| Numpad cell {n} | Step {n}'s note cell in the active layer's 4×4 grid — this IS the per-step note-entry area for the numpad sequencer (distinct from the keymap keys below it). It shows the step's note name when lit (a · when empty/off); clicking toggles the step on/off, and click-and-dragging up/down on the cell changes its note by hand. Steps are also filled in by RECORD / OVERDUB as you play the keypad, and a lit cell's note is what that step emits on the active layer's pitch output (base octave + key remapping applied). The current playhead step is highlighted while playing. |
| Numpad key {n} | One remappable KEY BINDING. Fourteen of them: the twelve chromatic note keys (C … B, played at the current OCTAVE) and the two octave-nudge keys, all in one map. Each cap shows what it PLAYS and which physical key is currently bound to it — that engraving is the only feedback the remapping has, so binding a key and never learning which one you bound is what removing it would cost. Left-click a cap and press any physical key to bind it (Esc cancels); right-click for the same Remap plus Reset to default. The map is a bijection: binding a key that was already in use frees its old note, and binding a note that already had a key frees that key. It lives on the node and is saved with the patch, so a rack can hold several NUMPAD+ with different layouts. |
| Oct | The keypad's base octave (0..8, default 4); shifts which actual pitches the 12 note-keys produce. The remappable octave-up/down keys nudge it by one. |
| Ovd | Overdub mode (the card's OVD button): when on, every keypress writes its note into the step (quantized to the nearest step while playing, immediately when stopped) without clearing the layer first — layer new notes over what's there. |
| Poly | POLY RECORDING — a mode you switch on and leave on. While it is on, a capture stores every key you are HOLDING at that moment as a chord in the step (up to 5 voices); while it is off, a capture stores only the one key that triggered it. The mono per-layer outputs always send the lowest note either way, and this control gates RECORDING only — the POLY output jack is always live, at 0 or at 1. |
| Rec | Record arm (the card's ARM button): when armed and play starts from step 1, recording latches and the active layer is cleared, then your keystrokes are written in; it auto-disarms after one 16-step pass. |
source
numpad-plus.ts on GitHub.