xformer — track engines, compared & heard

xformer ships eight track engines, each a different way to turn a clock into CV and gates. This page contrasts them on the axes that actually separate them — and lets you hear each one with a short characteristic demo.

▶ Tap any Play button to hear that engine. Audio starts on first tap (one shared Web Audio synth, no samples, no network). Demos are short and monophonic.

At a glance

EngineNote sourceOutputDeterminismTiming
Notefixed-patternstepped pitchdeterministicstepped grid
Curvefixed-patternshaped continuous CVdeterministicstepped grid
Stochasticgenerativestepped pitchprobabilisticstepped grid
PhaseFluxgenerativestepped pitchseeded-generativefree-phase
Tuesdaygenerativestepped pitchseeded-generativestepped grid
Indexedfixed-patternstepped pitchdeterministicstepped grid (irregular)
DiscreteMapinput-reactivestepped pitchdeterministicfree-phase (absolute-time)
Fractalsampledreplayed loopdeterministicstepped grid

The eight engines

Note fixed-pattern

The core 64-step melodic sequencer. Every step is a stack of per-step layers — pitch, gate, probability, length, retrigger, slide, condition.

n ← runMode(step); cv = quant(pitch[n]); gate = g[n]·P(prob[n]) Indexed table read on a fixed grid — every layer is a function of step n.
manual →

Curve fixed-pattern

Shape-per-step CV: 25 curve shapes scaled between per-step min/max, with gates derived from the curve itself. Continuous, not stepped.

φ = (t mod L[n])/L[n] ∈ [0,1); cv = min[n] + (max[n]−min[n])·S[n](φ) Piecewise shape interpolation over step phase (S = one of 25 shapes).
manual →

Stochastic probabilistic

Independent rhythm and melody rolled from scale-degree and duration "tickets" through a Marbles-style pitch bell. Live re-rolls; Loop locks.

d ~ Cat(degTickets ⊙ 𝒩(bias,spread)); τ ~ Cat(durTickets); gate ~ Bernoulli Weighted categorical draw under a Gaussian pitch field; Live resamples, Loop fixes the draw.
manual →

PhaseFlux generative

A 16-cell (4×4) pulse synth. Each stage fires a burst of gate pulses along a pitch curve, walked with a swept phase.

stage s ← traversal; pulse t[k] = s + warpT(k/N[s]); cv = base[s] + Δ·warpP(φ) Phase drives a per-cell pulse schedule × a pitch curve (absolute time).
manual →

Tuesday seeded-generative

A generative algorithm sequencer — 16 algorithms driven from a seed. Same seed, same riff; nudge the seed, new riff.

(cv,gate)[n] = 𝒜(flow, orn, n), 𝒜 ∈ {16 algorithms} Deterministic generator — pseudo-random in the seed, fully repeatable.
manual →

Indexed fixed-pattern

Duration-indexed CV/gate: each step carries its own length and gate in ticks, notes stored as scale-degree indices. Irregular meter by design.

t[n] = Σ[i<n] len[i] (ticks); cv = quant(degree[n]); gate = g[n] Step cursor advanced by accumulated per-step tick-lengths → irregular meter.
manual →

DiscreteMap input-reactive

A stateless threshold map. A moving input ramp scans 32 stages; crossing a threshold fires that stage's scale-degree note.

ramp r(t); on r(t) ⋈ thr[s] (dir[s]): cv = quant(deg[s]) Stateless comparator — output is a function of the input crossing 32 thresholds, no counter.
manual →

Fractal sampled

A section-sampled looper. Captures another track's loop with its feel — a cell per note-change (Event), keeping each onset's timing and gate length (Feel), not a quantized grid — then replays it through branches (transpose, reverse, …) and scale-snapped ornaments.

T[c] = ⟨pitch, gate, onset⟩ ← src @ note-change; out = (B[k]∘⋯∘B[1])(T)[i] ⊕ ornaments Captures the source's feel (onset + gate) → composed transform chain → scale-snapped flourishes.
manual →
All eight engines share one clock, one scale system, and one routing matrix. The differences above are about what kind of part each one is built to make — a written line, a moving voltage, a roll of the dice, a captured loop.