Clip player + monome grid

The clip player is an Ableton-Session-style clip launcher with 8 instrument lanes. Each row is one instrument with its own pitch / gate / velocity outputs, so up to 8 clips sound at once. It locks to TIMELORDE (the rack clock) and you can run the whole thing — launch, scene, and even write notes — from a monome grid 128 over WebSerial, with no companion app and no serialosc.

This is the illustrated guide for the clip player module. For its auto-generated port / param / source reference, see the clip player module page →

The mental model in one minute

  • Rows = instruments (8 lanes), columns = clip slots (8 per instrument) → 64 note clips.
  • Launch a clip and it swaps into its lane on the next loop boundary (or instantly). Each lane plays one clip at a time; launching a new one replaces it.
  • A scene is a column — fire it and every instrument launches its clip in that column together.
  • No tempo knob. The clock is TIMELORDE: it runs when TIMELORDE runs, at TIMELORDE's BPM. The only timing control is STEP (steps per beat).
  • Clips can be different lengths (1–128 steps, each independent). Lanes free-run as a POLYMETER — a 16-step clip against a 17-step clip drifts in and out of phase — and they all re-align to step 0 on the transport downbeat (press ▶), so a fresh start is always phase-locked.
  • Song mode records the launches you perform into an arrangement and plays them back — a linear song built from your live session. (jump to song mode ↓)

Quick start (no grid needed)

  1. Add a clip player (right-click the canvas → Audio → sequencers). It also drops a TIMELORDE if your rack doesn't have one.
  2. Double-click a pad in the card's 8×8 grid to open its note editor. Click a cell to place a note, click again to remove it (rows = pitch, in-key; columns = step). Right-click a cell to cycle its velocity through the 6 levels. Use to return to the launch grid.
  3. Wire that lane to a voice: open the card's PATCH PANEL (the yellow corner) and patch PITCH 1 → a VCO's pitch and GATE 1 → a VCA's CV (VCO → VCA → output). Patch VEL 1 into the VCA/ADSR amount for dynamics. Lanes 2–8 work the same on their own PITCH/GATE/VEL n.
  4. Press on the card (it starts TIMELORDE), then single-click the clip's pad to launch it. With QNT on it drops in on the loop boundary; off = immediately. Click the playing pad to stop the lane; stops everything.

If TIMELORDE is slaved to an external clock (a MIDICLOCK into its start/stop), the card's ▶/■ transport hides — you follow the upstream master instead of fighting it.

The card

  • Session view (default) — the 8×8 launch grid (rows lane-tinted). Single-click = launch / queue / stop; double-click = open the editor. A small 1/5 button to the left of each row toggles that instrument lane between MONO (one note per column — placing a note replaces what's there) and POLY (up to 5 notes per column).
  • Edit view — a piano-roll note editor for one clip: X = step, Y = pitch (scale-degree rows in-key, root at the bottom). Click to place a note (click again to remove); right-click to cycle its velocity through 6 levels. Cycle scale, set root, change length (16/32/64/128/8; up to 128 steps), scroll the pitch window by a row (↑/↓) or an octave (⤒/⤓), or clear the clip. A playhead column tracks the beat while the lane plays. Audition the clip without leaving the editor with the NOW / QUEUE buttons at the bottom-right (see below ↓).
  • ParamsSTEP (1/4 · 1/8 · 1/16 · 1/32 = steps per beat), OCT (transpose all lanes), GATE (note duty cycle), QNT (quantize launch to the loop boundary).
  • Transport▶/■ drives TIMELORDE (hidden when externally clocked); in the title bar stops all lanes; GRID connects a monome grid.

Connecting a monome grid

Requirements: a Chromium browser (Chrome / Edge / Brave — WebSerial isn't in Safari) and a classic FTDI monome grid 128 (the 2011–2017 varibright editions; the newer USB-C edition isn't supported yet).

  1. Plug the grid in over USB.
  2. On the card, click GRID and pick the grid's serial port in the prompt. The list shows all serial ports (macOS reports the grid without USB vendor info, so it can't be auto-filtered) — choose the usbserial / monome entry.
  3. The card is now bound to the grid (remembered per machine). Click GRID again to disconnect.

The grid is your hardware — serial I/O + LEDs are local to your browser. Which clips are playing syncs to everyone in the rack, so collaborators (and a second grid) see the same session.

Grid layout (Session mode)

CLIPS — 8 lanes × 8 slotsSTOPSCENEEDIT (hold)COPY (hold)bufferPASTE (hold)PASTE↺ (hold)STOP ALLTRANSPORT ▶
Session view — press a clip pad to launch it in its lane (green = playing). Col 8 stops a lane; col 9 launches a whole scene. Right column (held modifiers): hold COPY + tap a clip to grab it (the buffer indicator pulses), then hold PASTE (or PASTE↺ for a reversed copy) + tap a destination to drop it in.

16 wide × 8 tall. Cols 0–7 = the clip matrix (each row a tinted instrument lane). Col 8 = per-lane STOP, col 9 = SCENE launch (row y fires slot y across all lanes). Top-right E = EDIT, plus stop-all and transport in the bottom-right.

Driving it from the grid

  • Press a clip pad → launch it in its lane (or stop the lane if it's the one playing). Quantized to the lane loop when QNT is on.
  • Press the SCENE column (col 9, row y) → fire slot y across all 8 lanes at once (empty lanes stop).
  • Press the STOP column (col 8, row y) → stop lane y.
  • stops every lane; toggles TIMELORDE.

Copy / paste clips on the pads

The right column carries three held modifiers (hold-and-tap, never sticky): COPY, PASTE and PASTE↺ (paste-reversed).

  • Hold COPY + tap a clip → grab a structural copy of it into a per-machine clip buffer (a clipboard — local to your grid, never written to the shared rack). The buffer indicator just below COPY pulses while the buffer holds a clip.
  • Hold PASTE + tap a slot → drop the buffer into that slot (creating it if empty, overwriting if not), as one undoable change. Pasting into a currently-playing lane takes effect at that lane's next loop boundary.
  • Hold PASTE↺ + tap a slot → paste a time-reversed copy of the buffer (held notes keep their length, re-anchored to the mirrored end).

Precedence if you somehow hold more than one: EDIT > COPY > PASTE. The buffer survives reconnecting the grid, so you can copy a riff once and paste it across the whole bank.

Editing a clip on the pads (hands-only)

Hold the EDIT pad (session, top-right) + tap a clip → the grid becomes that clip's note editor: the top 7 rows = pitch (in-key, one octave; root at the bottom), all 16 columns = steps, and the bottom row is a function row.

EXITVELROW−OCT−ROW+OCT+SCALEFOLLOWx2LEN
Edit view (hold EDIT + tap a clip) — top 7 rows are in-key pitch × step columns; tap to toggle a note, hold + tap to tie. A pattern spans up to 8 pages of 16 steps: FOLLOW auto-scrolls the shown page with the playhead — tap it to FREEZE and page with ◀/▶. x2 DOUBLEs the clip (dups the first half); LEN opens the length editor. The function row also shifts the pitch window (ROW/OCT), cycles VELocity & SCALE, or EXITs.
  • Tap a cell → note ON; tap it again → note OFF.
  • Hold a note + tap another in the same row → one HELD note spanning them (the gate stays high the whole time).
  • Hold VEL + tap a note → step its velocity UP one level (wrapping 100% → 0%). Six levels ≈ 0/20/40/60/80/100%, shown on the grid as three note colours — two levels per colour:
0 / 20%40 / 60%80 / 100%

0% is a ghost note — the gate/note still fire, but the velocity CV is 0 (silent into a velocity-driven VCA). The six levels span the full 0..1 velocity-CV range, so patching VEL n into a sustain/level amount (e.g. MOOG 911 sustain) gives a real, drastic dynamic range.

The function row (bottom), with spacer gaps for legibility: EDIT (tap to exit) · VEL (hold to set velocity) · gap · ROW− · OCT− · gap · ROW+ · OCT+ · gap · SCALE · gap · FOLLOW · · · x2 · LEN. ROW± nudge the 7-row pitch window by a single scale-degree row; OCT± move it a whole octave. SCALE cycles the clip's scale (major → minor → pentatonic → chromatic); chromatic makes each row a semitone, so in-key notes spread further apart vertically (use ROW/OCT to reach the ones that scroll off). While the clip plays, the current step column lights up and sweeps across — the tempo pulsing through the clip.

Long patterns — pages, FOLLOW, DOUBLE

A clip can be up to 128 steps, edited as up to 8 pages of 16. The pad columns always show one 16-step page.

  • FOLLOW (default on, steady-lit) auto-scrolls the shown page along with the playhead, so the moving pulse always stays on screen. ◀ / ▶ are no-ops while following (dim).
  • Tap FOLLOW to FREEZE on the current page (it flashes); now ◀ / ▶ page left/right (dim/no-op at the ends). Tap FOLLOW again to resume and snap straight back to the live playhead page.
  • x2 (DOUBLE) doubles the clip length and copies the first half into the new second half — instant "make it twice as long, same again." It's a no-op at 128 steps.

Setting the length (the LEN page)

LEN opens a dedicated 2-row length editor. The top row picks which 16-step block the pattern ends in (tap block C → length C×16; the far-right pad EXITs back to the note editor); the second row trims to the exact last step inside that block — so length 113 is "block 8, then step 1." Setting length is non-destructive: notes past the new end simply stop sounding but are kept, and they return the moment you lengthen the clip again.

END BLOCK (×16 steps)EXITEND STEP
Length editor (the LEN pad) — ROW 0 picks the 16-step BLOCK the pattern ends in (tap block C → length C×16; pad 15 = EXIT); ROW 1 trims to the exact last STEP within that block (so 113 = block 8, then step 1). Length is non-destructive — notes past the new end stop playing but are kept and return when you lengthen again.

Per-lane MONO/POLY is set on the card (the 1/5 button left of each launch row), not on the grid. In a mono lane, placing a note in a column that already holds one replaces it; a poly lane caps at 5 notes per column (the poly voice width) and re-uses the oldest when you add a 6th.

Auditioning the clip you're editing

You don't have to leave the editor to hear your work. The bottom-right of the note editor has two launch buttons that target this clip's lane and slot:

  • NOW (left) — jump straight into the clip immediately, mid-loop, ignoring QNT. It lights green while this clip is the one playing in its lane. Use it to hear an edit the instant you make it.
  • QUEUE (right) — arm the clip to drop in on the lane's next loop boundary (it follows QNT); it pulses amber while armed, then plays in time. Use it to audition in-tempo with whatever else is running.
NOWQUEUE
The editor footer. NOW (green) launches the edited clip immediately; QUEUE (amber) arms it for the next loop boundary. Both act on the clip's own lane + slot.

Song mode — record your launches into an arrangement

The clip player has two transports. Everything above is SESSION — you launch clips live and they loop. Song mode adds an ARRANGEMENT: a linear timeline of the clip launches you performed, over song time, that the transport plays back. Record a session take, then replay it — the arrangement is your performance, captured launch-for-launch.

Two small buttons on the card header drive it:

  • REC — arm recording. While it's armed and the transport is running, every launch you make (a clip pad, a scene, a stop — from the card or the grid) is appended to the arrangement at the song-beat you heard it apply (not the beat you clicked), so playback reproduces exactly what you heard. The record-mode toggle (the RPL/OVR pill next to REC on the card) chooses: in REPLACE (default) arming clears the old arrangement and records fresh; in OVERDUB arming keeps the existing take and merges new launches into it by song-beat.
  • SES ⇄ ARR — flip the playback transport between SES session (launch live) and ARRangement (play the recorded song). In ARR the button shows the captured event count, and a read-only song view appears under the header — an 8-lane × song-time timeline with one block per clip and a playhead sweeping across as it plays.
bar 1234
The song view (ARR mode). Rows = the 8 instrument lanes (lane-tinted); the horizontal axis = song time in bars; each block is a launched clip running until the lane's next launch/stop; the green line is the playhead.

Switching mid-clip (the "NOW" override)

QNT stays the default — launches land on the lane's loop boundary so everything stays in phase. To break a clip immediately, mid-loop, Shift-click the clip on the card (or turn QNT off for launch-now everywhere). An immediate switch is captured into the arrangement tagged as such, so the recorded song reproduces the off-boundary timing exactly — quantized launches replay quantized, NOW launches replay NOW.

The arrangement (and which mode you're in) lives in the shared rack state, so collaborators see the same recorded song. For v1 the REC arm is single-recorder — one person records a take at a time; multi-recorder overdub is a later phase.

LED feedback

StateLEDMeaning
Empty level 0no clip in this slot
Loaded level 6a clip lives here, stopped
Queued level 12blinks until the lane loop boundary, then plays
Playing level 15running now (blinks down when a stop is queued)
STOP col level 12col 8 — brighter on a lane that is playing
SCENE col level 4col 9 — fire a whole column across all lanes
EDIT level 5top-right — hold + tap a clip to edit it
TRANSPORT level 15bottom-right — bright while TIMELORDE runs

Ports & params reference

PortTypeWhat it does
stop_all (in)gatea rising edge stops every lane at once
pitch1…8poly V/octeach lane's launched-clip pitch (chords fan out across poly lanes; a mono pitch sink receives lane 0)
gate1…8gateeach lane's note gate — high while a note sounds
vel1…8cveach lane's per-note velocity, 0..1 (patch into a VCA / ADSR amount)
ParamRangeWhat it does
STEP1/4 · 1/8 · 1/16 · 1/32steps per TIMELORDE beat (1/16 default)
OCT−2…+2octave transpose applied to all lanes
GATE0.1…1note gate duty cycle (fraction of the step a note holds)
QNToff / onquantize launch to the lane loop boundary (off = launch now)

All ports live on the card's yellow drill-down PATCH PANEL — there are no side jacks. Every knob is MIDI / control-surface assignable (right-click → MIDI Learn).

What's next

  • Song-mode editingshipped: the song view is editable. Drag a clip block to retime it in time (bar-snapped), click to select then cycle/delete it, and nudge the loop length in bars — in the in-card timeline or the full-window pop-out arranger editor (the "ARR ⤢" button). Blocks are derived from the recorded event log, so editing maps straight back onto it. Next: cross-lane (vertical) moves + per-note editing inside the pop-out.
  • Overdubshipped: the RPL/OVR record-mode toggle layers a new take onto an existing arrangement (REPLACE clears + records fresh; OVERDUB keeps the take + merges by song-beat). Next: surfacing OVERDUB on the Launchpad/grid controls + multi-recorder song-building.
  • On-grid song overview (Phase 3) — scrub and see the arrangement on the pads (monochrome presence/position on a monome; colour-coded blocks on an RGB Launchpad).
  • More clip kinds — audio loops and patch snapshots alongside note clips, plus recording into slots.

What to read next

  • clip player — the auto-generated port / param / source reference.
  • kria — the faithful monome Kria step sequencer (the sibling module).
  • Module catalog — every module, its I/O, params, source link.
Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo