Litany-exp is the experimental version of the Litany sample step sequencer. Adds pool expansion, multi-pin, drag-to-reorder, and a search modal for the samples-bored index. All existing functionality is preserved.

Add a voicesearch for a sampleopen POOL drawerpin & reordertoggle stepshit play

Reference docs — all controls, features, and keyboard shortcuts.

Voices & samples

A voice is a single instrument track. Each voice has a search query that pulls random samples from the catalog. The voice loads 8 random matches into a sample pool (max 16) and rotates through them as the pattern plays.

Searching for sounds

Type a query into the search field (e.g. kick, snare, 808, vocal chop). The field has an autocomplete with common instrument types. Press Enter or click away to trigger a search — the pool will reload with 8 random matches.

The re-roll button () refills the pool with the same query — you get different random samples without changing instrument type. The dice button (🎲) on the voice header picks a random instrument type (kick, snare, hi-hat, etc.).

Pool drawer & search modal

The POOL button in the meta-row opens a drawer showing all samples in the pool. Each entry shows the filename, a pin toggle, a preview button, and a remove button. The currently-playing sample is highlighted in gold.

Drag entries to reorder them — the ring buffer plays in display order. Use the + Search button to open a modal that browses the full samples-bored index. Search for specific sounds, preview them with a click, and add them to the pool individually or in batches. The ↹ +4 button appends 4 more random samples from the current query.

Lock, mute, and solo

Each pool entry has a lock toggle (🔒). Locked entries survive re-rolls — the pool fills new random samples around them. Unlock or remove entries you’re done with. M silences the voice. S solos it — all other voices are muted.

Volume & pitch

VOL controls the voice’s output level (0–100%). PIT shifts the sample pitch ±12 semitones (one octave up or down). Pitch changes affect both tuning and duration — higher = faster, lower = slower. This is the same mechanism used in classic drum machines.

Step sequencer

The step grid is a row of cells — one per beat. Gold cells fire the voice on that beat; dark cells are silent. Click any cell to toggle it.

The step count dropdown (default 16) sets how many steps are in the loop. Every voice can have a different step count. Different lengths across voices create polyrhythms — a 16-step kick against a 12-step hi-hat will phase in and out.

Euclidean rhythms

Euclidean rhythms are a mathematical way to distribute pulses evenly across a pattern. Three sliders above the step grid let you dial in patterns without clicking individual steps:

  • P (pulses) — how many hits to place. Must be between 1 and L.
  • L (length) — the total number of steps, 1–32. Changing this also updates the step count.
  • R (rotation/offset) — shifts the pattern left by this many steps.

Drag a slider to generate a new pattern. The step grid updates instantly. You can still click individual step cells to tweak the pattern manually — your edits stay until you touch a euclidean slider again. It’s a pattern generator, not a mode — both tools work together.

Common Euclidean patterns:

P,LName / feel
3,8Tresillo — the backbone of Latin and Middle Eastern music
4,16Four-on-the-floor — kick drum in house/techno
5,16Bossa nova / clave
7,16Complex Afro-Cuban bell pattern
5,8Cinquillo
2,3Hemiola — two against three. Try R=1 or R=2 for variation
Per-step parameters

Each step can have its own overrides — pitch, volume, probability, and trigger conditions. The meta-row has three toggles for per-step work: SEL, PROB, and AUTO.

SEL — Step select (p-locks)

Click SEL to enter select mode. Click a step to select it — VOL and PIT now edit that step’s values. Labels turn blue. Steps with overrides get a blue corner dot. The override bar shows × CLR (clear), COND (trigger condition), and MACRO (preset bundles).

PROB — Step probability

Click PROB for probability mode. Each cell shows a fill bar. Click to cycle: 100% → 75% → 50% → 25% → 0% → clear.

AUTO — Automation lanes

Click AUTO to see a heat map. Toggle PITCH (color: blue low, red high) or VOL (brightness) with the second button.

Trigger conditions

CondFires on
1:2Every other loop
1:4Every 4th loop
1:8Every 8th loop
2:2Skip first, play second
3:43rd of every 4 loops
4:44th of every 4 loops
PREOnly if previous step fired
NOT PREOnly if previous step didn’t fire

Macros

MacroEffect
accentFull volume, pitch +1
ghost30% vol, 30% chance — ghost note
soft50% volume
hiPitch +4, 90% vol
loPitch -5, 90% vol
xPitch +7, 50% chance
Play styles

Each voice has a play style that controls how samples are triggered and stopped. Open the ENV panel and use the STYLE dropdown to change it.

StyleWhat it doesUse for
one-shot Sample plays to completion each time a step fires. Multiple overlapping triggers are allowed (polyphonic). Kicks, snares, one-shot FX
cut Each new step immediately stops the previous one. Only one trigger plays at a time (monophonic). No release ramp on choke. Hi-hats (open hat cut by closed hat), any monophonic line
gate Sample plays while a step is active and stops with the release envelope when the step becomes inactive. Each step re-triggers the sample. Percussive sounds that shouldn’t ring out, rhythmic gating
legato Like gate, but if consecutive steps are active the sample continues without re-triggering. Only re-triggers when coming from an empty step. Releases when the last active step ends. Sustained sounds, synth lines, vocal phrases
Envelope

The ENV panel controls how each trigger fades in and out. It has an interactive visual envelope display.

Drag the handles on the envelope curve:

  • Left handle (attack) — how long the sample takes to fade in from silence. 0s = instant. Max = 2 seconds.
  • Right handle (release) — how long the sample takes to fade out. 0s = instant cut. Max = 3 seconds.

The area between the handles is the sustain portion — the sample plays at full volume here. For one-shot samples, the envelope is applied as a fade-in/fade-out over the full sample duration. For gate and legato, the release happens when a step becomes inactive.

Curve shaping

Each phase has a lin/exp dropdown:

  • lin (linear) — a straight ramp from 0 to 1 (attack) or 1 to 0 (release).
  • exp (exponential) — an eased curve. On attack it starts slow then accelerates. On release it drops faster at first then tails off.

Preview

The ▶ preview button plays the current pinned/active sample with the envelope applied so you can hear your settings. Enable auto to trigger a preview automatically when you adjust parameters (with a short debounce so you don’t get rapid-fire playback while dragging).

Effects (FX)

Each voice has a per-voice effects chain in this order: delay → reverb → filter. Open the FX panel to adjust. All effects are applied to the voice only — the master section has global controls.

Delay

  • TIME — delay interval, 10ms to 1 second
  • FB (feedback) — how much of the delayed signal feeds back in, 0–95%. Higher = more echoes
  • WET — dry/wet balance. 0 = no delay, 1 = full wet

Reverb

  • WET — dry/wet balance. Uses a synthetic impulse response for a small-room sound. 0 = dry, 1 = full reverb

Filter

  • TYPE — lowpass (LP), highpass (HP), bandpass (BP), or notch
  • FREQ — cutoff/center frequency, 80Hz to 20kHz
  • Q — resonance. Higher = sharper peak around the cutoff frequency, 0.1–20
Sample rotation

Rotation is split into two controls in the meta-row:

  • Cadence — how often to switch samples. HIT changes every trigger, BAR at the start of each bar, 2B every 2 bars, through 16B every 16 bars.
  • Pick mode — how the next sample is chosen. SEQ cycles through the pool in order, RND picks a random pool entry each time.

Pin = lock for re-roll

Each pool entry has a lock toggle (🔒) in the POOL drawer. Locked entries are the only ones that play — the rotation cycles through the locked set exclusively. Locked entries are also preserved when you re-roll — the pool fetches new random samples from the query to fill around them back up to 8. Unlock everything to play from the full pool again.

Open the POOL drawer to see and manage all entries. Drag to reorder, click to preview, lock individual entries, or remove them. Use + Search to browse the full samples-bored catalog and add specific sounds to the pool.

Master section

The MASTER bar at the bottom has global controls that affect the entire mix.

  • VOL — master output level
  • COMP — compressor with adjustable THR (threshold, -60 to 0dB) and RATIO (1:1 to 20:1). Collapses dynamics to make the groove punchier.
  • 🔗 SHARE — copies a URL to your clipboard. The URL encodes the entire app state (voices, patterns, FX, BPM, envelope settings, euclidean parameters) so the recipient opens your exact groove.

Toolbar buttons

The toolbar has randomize buttons for steps, queries, BPM, and voices. The 🎲 ALL button randomizes BPM + all voices at once. The 💥 CHAOS button (red explosion) randomizes every parameter — patterns, FX, envelopes, pitch, play styles, rotation, euclidean settings, and BPM. Use it for instant creative destruction.

Keyboard shortcuts

Toggle the VI button in the toolbar for vi-mode — vim-style keyboard control with voice navigation, step editing, pool management, and a floating HUD showing current bindings.

Standard shortcuts

KeyAction
P / SpacePlay / stop
⌘ZUndo (last 50 actions)
⌘⇧ZRedo
/ BPM ±1
/ BPM ±5

Vi-mode (press VI toggle in toolbar)

Normal mode: j/k voice, h/l step cursor, i toggle, x clear, % prob, c/C cadence, y pick mode, -/= vol, _/+ pitch, m mute, z solo, r re-roll, o/O add voice, dd delete, 1-9 jump, w pool drawer, f fx, v env, e euclidean, p pool mode, f fx mode, v env mode, [/] bpm±1, [object Object][object Object] bpm±5, u undo, ^R redo.

Euclidean submode (e): k/j pulses, l/h length, ./, offset. Pool submode (p): j/k entry, l lock, Enter preview, Space/P play/stop, x remove, / search, r +4. FX submode (f): j/k delay time, h/l feedback, -/= delay wet, _/+ reverb wet, J/K filter freq, H/L filter Q, c filter type. ENV submode (v): j/k attack, l/h release, c attack curve, C release curve. Esc exits any submode. Ctrl/Cmd combos pass through to the browser.

Euclidean submode (e): k/j pulses, l/h length, ./, offset. Pool submode (p): j/k entry, l lock, Enter preview, Space/P play/stop, x remove, / search, r +4. Esc exits any submode.