← All modules
AvailableMIDI & Modulation

Steps

A step sequencer and arpeggiator on one grid.

Engine preview

Not built for macOS, Windows or Linux

About

Steps makes no sound. Like the arpeggiator it is a note filter: it sits between your hands and whatever voice is mounted, holds the notes you press, and fires them on a grid. The difference is what the grid says. The arpeggiator fires every step; Steps consults a sixteen-slot pattern first, and each slot answers with a velocity, 0.9 is an accent, 0.45 is a ghost note, zero is a rest. The note that fires is still the walk's choice (up, down, up-down, order played, or the seeded random), so the two halves of the name are literal: the sequencer decides WHEN and HOW HARD, the arpeggiator decides WHICH.

The step's velocity multiplies the held note's, so playing softly makes the whole pattern softer without flattening the accents, the pattern is a shape imposed on your dynamics, not a replacement for them.

Swing is the module's headline knob and it is the kit's MPC convention: 50% is straight, every second slot is delayed toward its pair partner, and 66.7% lands the pair exactly on triplet positions. The default pattern deliberately puts half its hits on the odd slots so the knob is audible the moment the page loads.

The whole pattern is ordinary params, steps.v1 through steps.v16, which is not an implementation detail but the feature: the fallback panel can edit every slot, and a share link or preset carries the groove with no bespoke serialization at all.

This is a preview module. The scheduling is real, every note is committed to the AudioContext clock as an absolute time, so timer jitter cannot move it, but the voice it drives is the website's stand-in engine, not a compiled kernel, and no parity claim applies.

Build evidence

Every row below is a recorded build row or the recorded absence of one. Nothing here is inferred from what this module is meant to support.

Module
music.codex.steps v1.0.0
Built at
no recorded row carries a build time; the browser lanes record none
Closure hash
not a Processor — no lowering closure
Toolchain
  • scriptc 64acce1ae3b8…
  • moduleToolchainDist c621ffab721d…
  • pluginShellKitRuntime bca003784692…
  • faceShellGeneration 8533207ab81f…
  • uiPreservation cd28dbd7e3d6…
  • packagerVersion 3
Build result and download for each format
FormatResultDownload
Browser package (JS)Not built by this module's lane

this module has no release.json; its packager lane records no browser program rows

Not built for the browser
Browser package (WASM)Not built by this module's lane

this module has no release.json; its packager lane records no browser program rows

Not built for the browser
VST3Not built

no recorded artifact row for vst3; native-lane-report.json is absent or records no vst3 row for this module

Not built for macOS, Windows or Linux
Audio UnitNot built

no recorded artifact row for au; native-lane-report.json is absent or records no au row for this module

Not built for macOS
CLAPNot built

no recorded artifact row for clap; native-lane-report.json is absent or records no clap row for this module

Not built for macOS, Windows or Linux
Standalone appNot built

no recorded artifact row for standalone; native-lane-report.json is absent or records no standalone row for this module

Not built for macOS, Windows or Linux

Parity

No lane recorded an artifact; there is no parity evidence.

Signal graph.

Experimental

The exact normalized graph packaged for the shared browser/native runtime and exports.

How it works.

The module is the arpeggiator's architecture with one more table in the middle, and the split is identical: a pure core answers (held notes, step index, params) with a note or a rest, and a scheduler commits whatever the core says to the AudioContext clock through a lookahead window. Every musical claim, the walk orders, the velocity multiplication, the swing displacement, the rests, is a plain function checked in the test suite rather than by ear.

Swing is applied at scheduling time as an onset displacement: odd slots are delayed by the kit's musical-time maths, whose tests pin the exact triplet identity at two-thirds. The gate is clamped against the shortest surviving gap so a swung step can never overlap the note after it.

It hooks note handling exactly as the arpeggiator does: a keypress while the sequencer runs is swallowed and held, and the scheduler re-enters the engine's own noteOn with an absolute time, so the sound comes from whichever voice is mounted. It emits MIDI, not audio.

Goes well with.

Preview

Stepper

A 32-step Matrix, with ties, ratchets and a curve lane.

Preview
Preview

Arpeggiator

Walk held notes through a rhythmic pattern.

PreviewNot built for macOS, Windows or Linux
Preview

Chordex

Generate a voiced chord from one note.

PreviewNo build recorded
Preview

OSC Mini

A compact subtractive synth for learning the signal path.

Preview