Skip to main content

Glossary

TermMeaning
TrigA step that fires. The sequencer turns it into a MIDI note-on (and a scheduled note-off after the gate length).
P-Lock (parameter lock)A per-step override of one or more of a sound engine's parameters. Hold a step, turn a control.
Trig overrideA per-step override of a sequencer field — note, velocity, gate, or condition — as opposed to an engine parameter.
Override-ELSE-BaseThe one resolution rule: effective value = step override if present, else track base.
MachineA sound engine. Each track hosts one. Lockstep ships: SampleMachine (monophonic sample playback with trim, loop region, ZC-snap), SliceMachine (slice/scrub dual-mode with transient detection and poly), FMMachine (4-op FM synthesizer, mono/poly), AnalogMachine (virtual-analog dual-osc + SVF synth, mono/para), DrumMachine (Rytm-style drum synth — eight voices via one stepped param), RouteMachine (audio router / sub-bus), RecordMachine (live resampler into volatile REC buffers), LoopMachine (verb-driven overdub looper, up to 4 sub-tracks), TapeMachine (a linear tape addressed by the song's own position), StreamMachine (disk-streaming long-form sampler), MidiOutMachine (MIDI CC/note output to external gear), and StubMachine (silent fallback for unknown IDs). Record, Loop and Tape are three faces of one deck engine (a JUCE-free deck_core library).
Machine module (planned, 6.7)A machine shipped as a loadable native module behind Lockstep's stable C ABI, rather than compiled into the core. First-party machines are statically linked; third-party machines are authored against the SDK and installed into a per-platform folder. Bespoke contract for purpose-built machines — not a VST3/CLAP host. See DESIGN §36.
KitThe per-(track, Song) sound: machine identity, base parameters, post-machine FILTER/AMP, sample refs. Chosen via Track + hold(SRC). ("Kit" is retired as a user-facing term — the surface says MACHINE.)
PhraseA track's pure note content — the trig grid and per-step data. Each track has a pool of 16; Scenes reference them by index.
SceneA launchable cross-track row: a global phrase index (all tracks default to that row) + active-mask + core time + Morph snapshot. Per-track phrase deviations are live/RAM-only and never saved.
SongA self-contained song (Kits + Phrase pools + Scenes). The bank-sized unit.
ScopeA held modifier declaring what the next verb operates on. Eight in the left cluster (Func, Track, Phrase, Scene, Morph, Song, Mute, Fill), plus a held step and a section key. Cue is the audition + cue-balance scope, entered as the compound Func+3; the cue bus (pre-listen) crossfade shipped in 6.4.
Compound chordTwo modifiers (one per column) held together to combine scopes. Cross-column only; never fires on its own — it just narrows the scope until a verb is pressed. Func composes with anything.
VerbThe action applied to the scope. Verb row Y U I O P = Snapshot / Record (=copy) / Play (=paste) / Clear / Yes; under Func the same keys give Restore / Panic / Delete / No (7.12).
SectionA grouping of parameters on the section bar (keys 5–0). Canonical six: TRIG / SRC / FILTER / AMP / MOD / FX. Held scope modifiers reinterpret each key (e.g. Track+FILTER = post-machine filter, Song+FX = master FX). The Manipulation Zone shows eight parameters (4×2) of the active cell at a time.
Morph / Crossfader (5.2)A per-Scene pair of sparse parameter maps (A and B) blended by one continuous fader. Hold/latch Morph + encoder sculpts both poles at the normalised fader-split (scene-layer selector, symmetric with holding a step for P-Lock). Morph + ^/v forces pure A/B writes (QWERTY path). Absent pole mirrors the set pole — fader is inert until A ≠ B. Stepped params snap at f=0.5. Right-click the on-screen fader for MIDI-learn.
Manipulation Zone (MZ)The eight-parameter (4×2) editing band. What you are tweaking right now.
Step GridThe 2×8 matrix of step keys mirroring the bottom two QWERTY rows.
Focus / focused trackThe currently selected track (or Global). Determines what contextual encoders and selected-track MIDI map to.
Edit contextThe held-step state that routes edits to a step override vs. the track base.
ChokeA 1–2 ms micro-fade applied before retriggering a monophonic voice, to avoid clicks.
FoundationThe post-machine FILTER + AMP blocks the sequencer owns on every track, identical regardless of machine. Reached via Track + section (the track-foundation row). See §2.5.
Insert (FX)One of a track's two post-foundation IEffect slots. Loaded via the hold FX picker (or Song + hold FX for master), edited on the FX section, momentarily bypassed via Animate (FX + step). MIDI-out tracks have none.
Master FXFour Song-scope FX units on the master bus: 2 inserts (post-sum) + 2 send returns (post send-bus). Loaded via Func+Song+FX; cycle units with repeated press.
Send A / Send BPer-track post-insert level tap into shared send buses (AMP page 2, slots 8–9). Each send bus has a return effect before the master inserts.
AnimateThe momentary insert punch-in: hold FX + step to bypass (or enable) an insert for exactly the hold duration. Performance-only — never written to the pattern. Under Song+FX focus the step grid targets the four master units: steps 0-3 = master FX1, 4-7 = FX2, 8-11 = Send A, 12-15 = Send B.
DensityLive, subtractive trig-thinning overlay. Enter via the generator hub (3 held → DENSITY cell). Sticky DENSITY mode: nav keys page between tracks 1-8 and 9-16; Song-held (encoder or on-screen drag) → master offset (visible as arc baseline shift); MOD key cycles Amount/Mode sub-page (Musicality + Selection). Song-alone = swing (unchanged). Only silences would-fire trigs. Ephemeral amounts; durable Musicality + Selection per track. Selection has three detents: Scrub (deterministic), Re-roll (stochastic), Exempt (track bypasses density entirely — amount and Musicality cells greyed).
Velocity overlayPer-track live velocity modulation computed at emit time, not baked. Enter via the generator hub (3 held → VEL cell). Sticky VEL OVERLAY mode: AMP re-press cycles sub-pages (Depth → Center → Mode → Blend); press any other section key to exit; nav keys page between tracks 1-8 and 9-16. Mode: Off (no overlay) / Bar (metric weight against the effective time-sig bar) / Phrase (bar grid anchored to phrase start — accents follow phrase length, not global bar position). Blend: Replace (overlay supersedes authored velocity) / Mix (overlay delta added on top of authored velocity, or centred on velCenter for steps with no authored velocity — converges with Replace on flat material). Durable per-track, serialized (v20).
TIME pageTempo and time-sig share an identical scope ladder (Set → Song → Scene) and are edited on one page. Song+TRIG or Scene+TRIG opens the TIME sticky band (TRIG relabels to "TIME"); the held modifier at entry becomes the entry scope (the scope edits target when no modifier is held). Inside: Func+Song = Set, Song = Song, Scene = Scene. Three controls: Tempo — continuous knob, resolved BPM at current scope, scope-coloured parent arc tick, back-solved ratio on edit; dial to floor shows INHERIT (<parent bpm>) and clears the override. Sig — stepped knob, time-sig list ordered by ascending bar length (3/8 → 2/4 → 5/8 → 3/4 → 6/8 → 7/8 → 4/4 → 9/8 → 5/4 → 11/8 → 12/8 → 7/4), index 0 = INHERIT. 4/4 is the Set default. CLICK — stepped ON/OFF; toggles the metronome click. Level — how loud the click is (0–100%; a project preference, unlike the ON/OFF toggle, which is a live one). PreRoll — Off / 1 / 2 / 4 Bar count-in before a record start: with the sequencer record-armed, Play clicks for that many bars and then starts, so your first bar is in time. A second Play (or Stop) aborts the count-in without starting; the inspector reads COUNT-IN — bar 1 of 2. Hosted, the DAW owns transport start, so a count-in never delays host play. The click goes to the Cue output bus when the host has one enabled, and to master otherwise. Controls revert independently — no chord needed. Global (standalone) tempo is editable; DAW global is read-only (host BPM). The transport band's readout shows scope-coloured effective BPM + time-sig + key-sig. Serialized as v21.
Retrig / ratchetPer-step re-triggering at a musical rate (/4 … /32T). Authored as a P-lockable parameter in the TRIG meta-band field 5 "RTG": hold a step and turn the RTG encoder to set the rate (0 = off; /4 … /32T). Slice tracks: Fill+TRIG shows the slice-point picker (unchanged).
Euclidean generatorEnter via the generator hub (3 held → EUCLID cell). Encoders shape PULSE / OFSET / ACCNT against the phrase length, audible live; the mode is latched until P (commit) or Func+P (cancel). Y is inert in this mode.
Melodic generatorEnter via the generator hub (3 held → MELODY cell). Deterministic, seeded line generator against the effective key; encoders DENSE / CORE / CNTR / OCTS / LEAP / SEED / SRC. Metric strength is the spine (strong beats → strong notes, longer; weak beats → colour notes, shorter; rests bridge into stronger beats). SRC = Gen (generate rhythm too) or Keep (lock to existing trigs, write pitch only). SEED is the musical dial, not the whole seed: it is salted with where the melody is being made (track, machine, song, scene, phrase) and with a project epoch stamped when the project was created. So the same SEED on two tracks is two different lines — but the same SEED, in the same place, in the same project, always reproduces the same one. Live preview; P prints editable steps, Func+P / escape reverts.
Harmonic voice-moverEnter via the generator hub (3 held → CHORD cell). A sticky in-key chord sculptor with no chord theory — voices are rungs on the diatonic ladder. The four voices are shown as one chord view spanning four columns (one per voice); the three rows are the previous / current / next chord so each column reads that voice's motion, and CUR scrolls the chords through the bright middle row. Each voice's knob sits on the current row: a bare turn steps that voice in-scale (across octaves 2–7), Func+turn (mouse or encoder) reaches a chromatic borrowed tone; off-detent drops that voice (the others shift down to fill), the first empty column adds one. No two voices share a pitch — an edit onto an occupied note skips to the next free one. Structure encoders: LEN (chord count — starts at 1; growing clones the previous chord, shrinking is lossless), CUR (cursor), MOVE (slide the chord one scale degree; Func+MOVE slides the whole chord chromatically by a semitone) and OCT (octave-shift). A transpose that would push any voice past the ladder (octaves 2–7) is refused rather than clamped. MOVE/OCT are relative nudgers shown as +/-. Editing any voice / MOVE / OCT / cursor re-strikes the chord so you can preview by slow-turning. Commit prints one chord per bar of the in-scope time signature (even-spacing fallback when there are more chords than bars); P prints, Func+P / escape reverts.
Control-AllHolding Track with no track selected broadcasts the next parameter edit to every track that has a matching control.
MuteSuppresses a track's trigs non-destructively. Mute+step = global mute (survives scene/song changes); Scene+Mute+step = per-scene mute (the scene's active-mask).
FillA momentary modifier: while held, fill-conditioned steps fire. Used for live variation.
Trig conditionA per-step (or per-track) firing rule: probability, iteration (m:n — fire on m of every n loops, evenly spread), previous-step dependency, fill rule, and one-shot.
Audition (Cue)Pre-listen without writing anything. Enter the Cue scope with Func+3: holding it fires the focused track's base trig; Cue+step fires that step's resolved trig (note/vel/gate + P-Locks). Off-schedule, post-machine FILTER/AMP applies, pattern untouched.
Cue balanceEach track has a persistent cue balance b ∈ [0,1] (default 0) that crossfades its output between its normal route/sends (× (1−b)) and the cue bus / headphones (× b) — the DJ "cue on the phones, then bring it in" move. Applied after Level as a fan-out gain: a direct track→track tap bypasses cue (reads the full upstream signal), a Master/Bus tap reflects it, sends fade with it. It is a live performance overlay (not scene state), serialized, automatable. Set it with Cue + Mute (focused track), the cue console (Cue + hold(AMP) — arm several tracks to flip together on the next quantum, or ride the eight balances on the encoders; re-press AMP to page the track bank), or the per-track CUE cell on the AMP page (edited in context like Level) — each with a ~5 ms declick. The global balance is APVTS-backed (never a channelState slot, so no double-store), but the AMP cell also P-Locks per step (hold a step) and morphs per scene (equal-power), joining the same P-Lock ▷ morph ▷ base ladder as Level — 6.4a. The cue console only ever writes the global base, so you can never P-Lock one track through another's mixer. Cue + Scene and Cue + MIDI-out are planned follow-ons.
Out routingThe CHANNEL "Out" slot sets a track's single destination (out-degree ≤ 1): Master (default), Track N, Aux N (host aux output — the DAW mixes it), or Off. Picking one replaces the previous — a track is never on Master and an aux at once. Route into a Route track to build an aux/sub-bus (the bus reads the sum of its feeders, plus its own input if any). The Out rotary steps only through valid destinations (Off / Master / current buses / aux) with a live label — synths, MIDI-out, self and cycle targets never appear. If a target's machine is later swapped to a non-bus, or an Aux N host bus is disabled, the edge folds back to Master (no audio lost) and revives when the target becomes valid again. A bus and its feeders share a colour on the track/VU row. See §2.5.
Lock-only trigA step cycled Trig+step through off → note → lock-only. A lock-only step emits no note but applies its P-Locks (filter, channel, env, insert) onto the sustaining voice as the playhead crosses it — parameter motion without retriggering. Its locks keep applying after you stop the transport (the playhead parks where it stopped). A few slots are bound when a note starts — a player's Start, Rev, Stretch, Sample — so a lock on one of those cannot move a voice that is already sounding; the MZ marks such a lock *! instead of the usual *.
One-shot trigA trig condition (COND meta-band "1Shot") that fires once then is spent until re-armed. Re-arms automatically on transport (re)start and on scene switch; armed/spent is RAM-only (not saved).
MarkA RAM-only snapshot you pushed. Bare Y (SNAP) pushes before a risky idea; Func+Y (RESTORE) tap=pop one/hold=floor. Scope-respecting: captures whichever scope is held (none=Song, Track, Scene, Phrase). Depth is bounded only by a generous per-scope memory backstop (you will not hit it in normal use); floor = saved state. Distinct from Undo — see §5.15.
UndoThe system's safety net, armed automatically before a destructive op and reached with Func+O. Carries the scope of the operation that armed it, so it never has to be told one; kept on its own shallow stack, separate from your marks (§5.15, DESIGN §13.6).
Launch modelPerformance is launch-based, not arrangement-based: queue a Scene (Scene+step) to fire at the next core-time boundary, or switch Songs (Song+step). There is no written timeline or pattern chain.
Sample poolThe project-wide library of samples, stored as {path, hash} references rather than embedded audio. A reference is identified by content hash, not array position (9.18), so it survives a pool reorder and a file move (reload → hash matches → auto-relink); a missing file flags the entry for Relink. Missing samples are surfaced by a persistent banner ("N samples missing — Manage to relink") that stays until they are relinked, not just a fading load-time toast. Files are re-checked at runtime too: opening the pool manager re-stats every path-backed entry, so a sample deleted or moved while the app is running shows as MISSING with Relink enabled. A File already decoded into RAM keeps playing even after its file disappears (no mid-performance dropout) — only the flag updates; a disk Stream whose file is gone falls silent cleanly. The pool manager groups entries as FILE / STREAM / RECORD / LOOP; a Save… action promotes a volatile Record/Loop capture into a durable File. Entries are numbered within their group (FILE 1, FILE 2, STREAM 1, REC 1 …) in the in-machine sample picker, so the number stays put across a reload even though the reserved volatile REC slots re-seed at the front of the raw pool.
Sound PoolA project-scope library of saved per-track sounds (machine + base params + sample refs). Fill+SRC re-skins the step grid to the pool for live-swap audition; with a step held the swap bakes as a sound_id P-Lock (5.7).
Scope colour grammar (3.3)A canonical palette per scope (step = light grey, plus distinct hues for track / phrase / scene / machine / morph / song) used by key tints, the step-grid scope re-skin, and any badge that needs to say "which scope is held". In-scope keys (the section keys and verbs the scope rebinds) light fill+border in the scope colour; ambient keys stay neutral; reserved keys dim.
Scope re-skinWhen a scope modifier maps to a 1-of-16 selector (Track / Phrase / Scene / Song; Track + hold(SRC) = machine picker), the 16 step keys become a non-paginated index for that scope. Unavailable indices dim. Cells tint in the scope's colour — except an occupied Song or Scene, which fills with its own assigned identity colour (§24) and shows its name (unnamed entities fall back to the 1-based slot number); the cell border keeps the scope colour so the scope stays legible.
Top-bar dashboard (3.4)The top of the editor shows a scope-coloured BPM + time-sig readout (colour = the scope that owns the current override: Scene, Song, or grey for global/default). The readout updates every 30 Hz and reflects effective (resolved) values.
Value-label table (3.4)A ParamSpec field carrying textual names for stepped/enum positions (LP24 / LP12 / HP / BP, MONO / PARA, …). The MZ renders the textual name in place of a number when present.
Step-hold capture windowThe canonical chord-edit path: hold a step → play MIDI → each note-on snapshots all currently-held notes; release commits velocity (highest) and gate. Empty capture = no change. Independent of record-arm and transport. Multi-step: all held steps receive the same chord.
Note-count badge1–4 stacked tick marks on the left edge of each step cell showing trigOverride.noteCount — immediately visible without entering any edit mode.
Note-edit modeHold a step, then tap SRC — the inspector opens; SRC key relabels to NOTE. This enters a 1-octave chromatic keyboard on the step grid: cells 0–11 = C through B, 12–15 unused. Press a cell to toggle that pitch in the current view octave. Cross-octave instances show small octave-number badges. NavUp/NavDown shift the octave. Staged removals commit on step release. (Legacy Func+Src+step retired.)
Step inspectorHold a step — the grid re-skins showing the step's P-Locks (packed, orange cells = set slots). Tap a cell to stage it for removal; tap again to cancel; release the held step to commit. To reach the held step's own cell (which sits under your finger), tap Func while holding to latch the inspector hands-free, then tap freely and double-tap Func to apply. (A tap — Func still qualifies normally while a step is held, so Func+←/→ nudges and Func+SRC opens note-edit on the first press; only a Func released without having qualified anything latches.) Tap SRC while holding to enter note-edit for that step. ←/→ while holding bubble-swaps the step with its neighbour (the held focus follows, so repeated presses keep moving it). Func+←/Func+→ while holding nudges micro-time ±5% of step length. Release all to commit; the trig toggle is suppressed when any edit occurred.
P-Lock clear gesturesTrig + hold(Clear) (hold a step, hold O) clears every P-Lock on the held step(s), leaving trig and condition intact — the same tap/hold split the Clear key uses everywhere else, the hold being the wider blast radius (9.37; it was Trig+Func+Clear until Func+O became Undo). Trig + (active MZ slot) + Clear clears only that one slot. Trig + (section key) + Clear clears just that section's overrides on the held step(s); since SRC owns the note payload, Trig + SRC + Clear clears note / velocity / gate overrides only, leaving trig and P-Locks intact. The hint band shows these gestures automatically when a step with P-Locks or note overrides is held.
NoteSelection biasPer-track bias for chord-note spread when the machine voice count is smaller than the step's note count. TopBias (default) includes top + bottom and fills from the top; BottomBias fills from the bottom. Set in the TRIG meta-section, slot 3 (Bias = TOP / BOT).
Machine pickerHold Track (2) and hold the SRC section key — step cells show the available machines; press one to load it on the focused track. Same rule as the FX pickers (Track/Song + hold FX): scope + hold(section) = choose what fills that section, at that scope. Tapping SRC still pages its params.
Machine scope (9.29)Func+Track — the unkeyed rung inside Track. Track owns identity (which machine, mute, level, routing); Machine owns the sound (its params). Section keys resolve to the machine's own pages, and the verbs finally reach it: Machine+Rec = copy sound, Machine+Play = paste, Machine+Clear = init. Func+Song is its mirror: the Set scope, the unkeyed rung above Song.