← menu

OUT —

…
third-party licences
help
LAYOUT AND HELP
  • Start (Menu), short press: next screen in the ring PERFORM → VISUAL → MIXER; from any other screen it returns to PERFORM. Hold Start for a quarter second: the quick menu (d-pad moves, A selects, B goes back, Start closes). Hold Start + Y = transport play/stop, hold Start + X = REC (both can be turned off in SETUP → Gamepad)
  • Back/View, short press, switches between pads and chords; hold Back for about a second for panic (Xbox/Guide is panic too). In HERO, Back pauses the song
  • keys: 1–8 screens, Tab next screen, Q quick menu, Esc back to PERFORM, M pads/chords, Space transport, R REC, P panic, [ ] previous/next patch, G algo, H hero, F visualizer fullscreen
  • MOTION (screen 6): how the chord notes move per side — Chord / Arp / Algo / Seq. The type switch next to pads/chords sets both sides; hold Back and press LB / RB on the gamepad to cycle it (Back alone still flips pads/chords on release). On the MOTION screen: d-pad moves, A assigns the card to the target side (A again on a step motion opens its grid: A cell on/off, LB/RB pages, X length, Y velocity), X likes, Y switches LT/RT, LB/RB shelves, B back. The tempo in the top bar is on every screen: drag it, −/+ (Shift ±10), TAP, double-click to type; quick menu → Tempo on the gamepad
  • MIXER: ←/→ select a strip, ↑/↓ change the value, LB/RB pick the row (level / pan / delay / reverb), A mute, X solo, Y reset, B back. PATCH: d-pad moves, A applies, X likes, Y opens the editor, LB/RB categories. SEQUENCER (the last take): A keep, X tighten, ←/→ grid, ↑/↓ strength, Y save, RB edit as pattern, LB preview. After REC the TAKE panel loops the take: REC again adds a layer (up to 7), A save, X tighten the layer, Y mute it, B drop it, LB / ↑↓ pick a layer, RB / Start → SEQUENCER. PATTERNS: d-pad, A launches on the next bar, X likes, Y stops, RB/LB add to / remove from the chain
  • PERFORM / VISUAL in chords, d-pad layers: hold ↑ and A B X Y are transpose −1 (A), next sequence (B), previous sequence (X), transpose +1 (Y); hold ↓ and they are rate slower (A), octave + (B), octave − (X), rate faster (Y) of the side in play, with LB/RB previous / next motion and L3 latch; hold → and LB/RB are the previous / next patch, LT/RT page up / down by category (the last patch of the category above / the first of the one below; the triggers play nothing then), A like, B dislike (hidden from paging; source hidden brings it back), Y source all / set / liked; hold ← and LB/RB are the previous / next pattern or chain step (B / X add / remove the playing pattern to the chain, A chain on / off, Y stop). Without an arrow LB / RB play pads 3 and 4. A d-pad tap alone does nothing. The tiles show the jobs while held. Pads mode keeps ↑/↓ semitone, ←/→ octave of the last track
  • LT and RT are tracks 1 and 2 (triggers work like keys: a hit when crossing the threshold, velocity from how fast and deep it is pressed in the first ~25 ms, release sends Note Off), A B X Y are tracks 3–6. The "triggers play" toggle brings back the old layout (LB and RB are pads)
  • Pads mode: LB and RB step the track's instrument (the last one played) by −1 and +1 (CC 70, 0–12), holding repeats. In chords they are pads 3 and 4 (below). Mute and sustain are the "mute" and "hold" toggles in SETUP → Gamepad; the target of each is changed in the sticks deck
  • trigger-pad velocity = press dynamics multiplied by mute; if mute is not set on any button, the multiplier is 1
  • ↑ and ↓ move the note of the last played track by a semitone, ← and → by an octave (each track keeps its own note; Share/Capture resets it)
  • hold LS for roll: while held, hits follow the clock grid, the velocity of each is taken from the mute trigger.
  • hold keeps the sustain trigger while pressed, and so does the "hold notes" button in SETUP. Anything held by either is released by panic, a latch reset, or leaving the page, so no notes get stuck
  • sticks are the instrument's four parameters (its own names, e.g. Punch / Body / Drop / Snap on Thump): left X and Y on the first two, right on the other two. They go to the channel of the last touched track, so you tweak what you just hit
  • on the machine: SETTINGS → MIDI → Sync, parameter Clk In. There is no separate transport switch there; this one enables clock and start/stop together
  • and SETTINGS → MIDI → Ports, parameter Inp from: set USB or M+U, otherwise the machine does not listen to the cable

the machine makes the sound: the page only sends MIDI out and synthesizes nothing (unless the built-in engines are in this build and chosen as the sound). Web MIDI is available in Chrome and Edge on desktop; in Safari and on a phone browser MIDI is unavailable, and only the gamepad view remains.

NOW
?

What is playing right now: the patch (→ held + LB/RB page, ◀ ▶ here), the sound output (your Model:Cycles over MIDI, or the built-in engines on this page), what each side sounds, the clock and the scale. Everything else lives on the other screens: Start cycles PERFORM → VISUAL → MIXER, hold Start for the quick menu.

PATCH ○ not sent —
sounding — — not played yet sent— velocity—
motion · Chord LT: chord · RT: chord
state idle
mode · scale
pads
—
PADS · BUTTON → OWN TRACK
?

each button hits its own track, each with its own channel. On Model:Cycles the note pitch sets the tone of the sound. Each track has its own hit note (shown on the pad): hold ↑ and press X / B to move it by a semitone, LB / RB by an octave, for the track hit last (the frame on the pad). The new note sounds at once as a short hit (the "audible" toggle in SETUP → Pads). The other arrows held: ↓ the roll (LB / RB rate, X / B length, Y on / off), → the kit (as in chords), ← the recorder. Hold a pad and press an arrow: the editor of that pad's track (← sound, ↑ sequence, ↓ motion, → pitch · mix). A tap of ↓ opens it on the last track, a tap of ↑ comes back up. Reset is the "reset note" button there or Share/Capture on the gamepad. Notes are remembered at the moment of the hit: if you shift the transpose with a button held, the same note is released.

STICKS · TRIGGERS
?

sticks are four MACROS with our own names (Tone, Shape, Motion, Body by default; rename them in the editor). A synth PROFILE says where each macro lands: on the Model:Cycles (the default) they are the four knobs of the instrument, CC 16–19, and the deck shows the instrument's own parameter names (Punch / Body / Drop / Snap on Thump, Air / Motion / Detune / Mix on Swarm) while a macro keeps its default name; other hardware profiles use that synth's numbers; Custom is yours: several targets per macro, CC / NRPN / bend / engine FX, min–max, curves, invert, MIDI learn. The "⚙" button in this title bar opens the editor; the small text under each name is the live target. A patch can carry its own stick map on top (PATCH → Edit). In chords L3/R3 lock the stick's knobs (FIX lights up).

triggers: by default the left one mutes and the right one holds. Mute: at rest a hit is full velocity (127), squeezing takes it down to one. Sustain is done by the page, not via CC 64 (Model:Cycles has no pedal): while the trigger is pressed, note-offs pile up and go out together on release. "Pitch" and "bend" send MIDI; mute and sustain send nothing out. The "triggers play" / "stick release" / "mute" / "hold" toggles are in SETUP → Gamepad.

left stick
X —
Y —
right stick
X —
Y —
left button LB
—
right button RB
—
GROUPS · CC 70mixer · 3
LT · tracks 1–3—
RT · tracks 4–6—
VISUALIZER · window undocked or closed
patch—
chord—
bpm—
motion—
sound—
Start → MIXERhold Start · quick menu
INSTRUMENTS · GROUP FX
?

Each chord group has its own instrument (Thump, Snap, Clang, Knock, Glow, Choir, Crack, Clap, Bell, Grit, Swarm, Drone and their variations). "Instrument ▸" opens the list with each one's character and sends the choice to all three channels of the group at once; −/+ step through the twelve base sounds, "instant" sends on every step.

Group Delay and Reverb send: CC 12 and 13 on all three tracks of the group (A is 1–3, B is 4–6). Values are not sent on load.

group 0
group 0
MASTER FX
master FX on the device · CC 85–88 · channel unconfirmed
current patch—
CHORD PATCHES

With → held, LB and RB flip the visible patches of the active category (holding repeats). "♥ only" and "show ✕" filter the paging. A patch sets the machines, knobs and sends of all six tracks, which tracks LT plays and which RT, and where the sticks go. Sending: first notes are silenced and All Notes Off goes out, then CC 70 on all tracks, and ~40 ms later the other CCs. Changing the patch cuts the sound and replaces the sounds of all tracks. GATE (CC 67): toggles under the chord tiles; DRONE (machine 12) does not read GATE. A patch is not sent on page load. "?" marks hypothesis values, check by ear on the machine.

DETAILA apply · X ♥ · Y edit
MIDI
?

this is our own idea of the state, not the machine's reply: the page sends Start and Stop, but Model:Cycles reports nothing about itself.

built-in engines: contain DSP code by Emilie Gillet (MIT) — see third-party licences.

on the machine: SETTINGS → MIDI → Ports, "Inp from" = USB or M+U; SETTINGS → MIDI → Sync, "Clk In" on for the page clock.

SOUND

HW = the MIDI port only · BUILT-IN = the engines on this page · BOTH = the same bytes to each. The big switch on PERFORM picks Model:Cycles or Built-in; BOTH is only here.

CLOCK
?

a browser clock is less stable than the machine's built-in sequencer. If the tempo drifts, turn the clock off here and start the machine with its own button. Messages are scheduled 100 ms ahead and go out with an exact timestamp; the time base is performance.now(), the same timeline in which Web MIDI accepts timestamps. The page creates no Web Audio nodes for it. In a background tab the browser throttles timers, so keep the page in front.

clock stopped

BPM and the state are on PERFORM (NOW column); play / stop also live in the quick menu (hold Start → Transport), on Space, and on hold Start + Y.

SCALE · RHYTHM
?

the scale is shared by all modes. Roll repeats on the grid while LS is held. Quantize delays a hit to the nearest grid step, up to one step of latency, so playing feels sticky. Off by default. It can only delay forward: if the nearest step is already behind, the hit goes out immediately.

roll —
PADS
shift from C4 0
channels

By default pad channels are locked to 1–6 (a field on each pad). Enable editing only if the machine needs others.

GAMEPAD

gamepad not detected

nothing pressed yet

input: not selected / not listening / received 0

fast path
ADVANCED
PC · program change (test)

Changing the preset cuts the sound and replaces the sounds of all tracks. PC 0–95 is pattern A01…F16 (bank A–F × 16); a match with the machine's presets is not confirmed. PC is not sent on load.

preset A01 · PC 0

no PC sent yet

CC 70 · raw machine (advanced, test)

Raw machine number for people who know the device table (the "Instrument ▸" picker on MIXER is the normal way). On the device, enable RCV CC and the track channel; changing cuts the sounding voice.

nothing sent yet

INPUT · what the device sends

Subscribes only when toggled on; the page sends nothing on connect. Clock and active sensing are counted separately. Mirror works in chord mode only: a CC from the track channel is repeated on the other channels of its group (the source is not duplicated, echoes of our own messages are ignored); PC goes to the PC channel as is; notes are not mirrored.

nothing received
REC
recordingoff

REC (or R) records everything the page sends to the machine (and the listener input, if enabled); clock is not recorded. Files: SMF format 1, PPQ 480, plus a .json sidecar. A pattern switch writes a marker. Clock follows REC (SETUP → Clock).

RECORDINGS
MIDI RECORDINGS

They are stored on the computer running the server; "Finder" and "open folder" open Finder there (including when connecting from another device over Tailscale). Signed in: mine / public on the service.

lib/02-loops/rec/

No recordings yet.
HERO · PLAY ALONGH
stateoff

A recording becomes a song to play along: load one from the list, pick karaoke or highway, difficulty and ghost. Back pauses; the quick menu's Transport entry restarts the song. Recordings in the list have "▶ along".

LAYER · OVERDUB / CONTINUATION
stateoff

Open a parent from a recording ("over" / "cont." in the list): the parent plays as a ghost through the port or engines, you play on top, REC records only your take. Takes, loop, solo parent and "save as remix" live in the layer bar at the bottom of the page.

ALGO · LIBRARYG

Math sequences and algorithms played as music, up to three layers locked to the page clock. Inside the panel: Space play/stop, S surprise, 1–3 layers.

PROFILE · FEEDBACK

guest · recordings are saved on this computer. Sign in on the service to save to the cloud and share.

Start next screen hold Start quick menu Back pads / chords LBRB pads 3 · 4 pad+arrow track editor · tap ↓ dive · ↑ up Guide panic 1–9 screens · Tab next · Q menu · Space play