the field manual
Tendril is a melody that grows — wake it, steer its climate, lock the accidents you love. This is everything the instrument can do, from your first minute to the signal chain.
Quick start — your first minute
- Press play (or hit
space). The organism wakes up singing a little melody. - Drag the dish — the big circle. Left↔right is warmth, up↕down is viscosity. This is the climate, and it colours everything at once.
- Nudge MUTATE — the pink arc, top-left. The melody starts to drift and evolve on its own.
- Lock what you love. Click a note where it orbits the dish and it's protected from mutation. Click again to free it.
- Wake the beat. The
beatcorner boots asleep — its dot pulses an invitation. Click it to bring in drums. - Roll a new creature with SPAWN — the purple spore at the bottom. It reinvents the patch but keeps your key, tempo, and locked notes.
That's the whole game: wake it, steer the climate, let it mutate, lock the keepers, spawn when you want a fresh start. Everything else is depth.
The big idea (mental model)
It grows, you steer. Tendril is not a step sequencer you fill in note by note. It generates a living loop; your job is to shape its tendencies and lock the parts you like. Think gardener, not programmer.
Climate, not parameters. The dish sets a climate — warmth and viscosity — that bends brightness, drive, motion and feel together. You paint mood first, details later.
Mutation vs. locks. On each pass, every step has a chance (set by MUTATE) to reroll its pitch and tone. Locked steps are immune. That tension between drift and the notes you've pinned is the instrument.
Strains are sounds, gaits are beats. A strain is a voice preset; a gait is a beat preset. Pick one as a launch point. Turn knobs and you drift away from it (the chip dims to ≈, an "origin"); click the chip to snap home.
Moons modulate. Two little moons are LFOs. Drag a moon's spore onto almost any knob — or the dish, the GLAND arc, or the Wave Dial — to make it wander.
Sections are alive. The four corner names — loop, air, beat, voice — are on/off switches as well as labels. Turn them off to freeze, bypass, silence.
Glossary
Creature / organism — the whole living patch: melody, drums, sound and motion together. SPAWN rolls a new one; the patch slots save them.
Climate — the dish's two-axis mood control: warmth (horizontal) and viscosity (vertical). Drives filter openness, drive, and spore motion.
Strain — a voice preset (the cyan chips under the dish). The ring of strains swaps with the engine.
Gait — a beat preset (the amber chips). A gait sets the tempo, swing, lane fills and the beat's feel (how it's accented and how tight or loose the timing sits) — and never touches your melody.
Kit — the drum sounds: organic, 808, 909, 707, linn (set by the DNA stepper).
Moon — an LFO. Each moon has a depth (drag its face), a rate, a wave, and a spore (the plug you drag onto a target to modulate it).
GLAND — the organism's own per-step tone movement (the upper-right arc). In west-coast mode it sequences FOLD instead of filter cutoff.
Mutate / Drift — mutate rerolls notes; drift loosens tone (analog wander on the filter/timbre). Two different kinds of instability.
Lock — pinning a step against mutation by clicking its node on the dish.
EMOTE — how hard the melody leans into downbeats and freshly-mutated notes (velocity dynamics). Internally still the dynamics macro.
FEEL — global drum-mutation amount; lives in the KICK strip where a send knob would be.
West-coast (LG) — a filter character that turns the voice into a Buchla-style wavefolder + low-pass-gate timbre you can sequence. Not a separate engine — it works under all three.
Specimen / patch — a saved creature (five slots, stored in your browser).
Controls — by cluster
The dish (climate)
The dish — center. Drag to set the climate: warmth left↔right, viscosity up↕down. Click a melody node (within a hair of it) to lock it against mutation; locked nodes wear a bone-white shell. Deep: defaults warmth 0.5 / viscosity 0.25; climate drives filter brightness/openness, HEAT drive, and spore motion, and is itself a moon target.
The arcs around the dish
MUTATE — upper-left arc, pink. Probability that each step rerolls its pitch every pass. Deep: default 0.09; not modulatable.
DRIFT — nested inside MUTATE, amber. Timbral instability — analog wander on the filter and tone. Mutate drifts the notes; drift drifts the sound. Deep: default 0; a moon target.
GLAND — upper-right arc. The organism's own per-step tone movement (how much the filter sequence breathes). Deep: default 0.5; a moon target; in west-coast (LG) it sequences FOLD instead.
EMOTE — nested inside GLAND, purple. How hard the melody leans into downbeats and fresh mutations (velocity range: flat → wide). Deep: default 0.6; a moon target; internal key is dynamics.
The Loop console (the soft menu, left + the LED screen)
SCALE / FREQ — console row. Cycle the scale (‹ steps back ›). Boots on major pent. Click the SCALE label to flip the whole pitch system into FREQ (Hz) mode — continuous frequency instead of notes. Deep: 7 scales seed the NOTES grid; FREQ mode hides NOTES and OCTAVE and renames RANGE to SPAN.
NOTES — console, under SCALE. A 12-cell chromatic grid (1 ♭2 2 ♭3 3 4 ♭5 5 ♭6 6 ♭7 7 from the root). Click cells to add/drop pitch classes. Deep: SCALE lights a set; the scale name greys when your set departs from it and snaps back when it matches one. The melody is quantised to whatever's lit; clear everything and it falls back to the root. Hidden in FREQ mode.
OCTAVE — console, 5-bar strip. Shifts the melody ±2 octaves; middle bar = 0. Hidden in FREQ mode.
RANGE / SPAN — console, 6-bar strip. How many octaves the melody can spread. Deep: RANGE 0 is the pedal — the loop collapses to a held root (works in any mode). In west-coast (LG) only, an extra HOLD dot appears left of the pedal for one continuously sustained drone. More bars add octaves; called SPAN in FREQ mode.
ENGINE — console row. Cycle the voice core: subtractive → FM → wavetable. Shortcut f. Deep: tints the UI (orange for FM, violet for WT) and swaps the strain ring plus the Wave Dial, DETUNE and SYNC labels.
SPACE (type) — console row. The voice reverb character: plate / hall / bloom / cosmic / shimmer. (The amount is the SPACE knob in AIR — see below.)
TEMPO — the LED screen. Beats per minute. Default 60, range 60–240. Drag, scroll, or double-click to reset.
LENGTH — the LED screen. Steps in the loop: 16 → 32 → 64.
FILLS — the LED screen. Melody density (how many of the steps actually sound). Deep: Euclidean spread; max tracks LENGTH.
ROOT — the LED screen. The key (C…B), wraps around. Default C.
Voice — the right-hand knobs
These are "bloom" knobs: they show their state as a dot, not a number, until you hover, drag, or flip the value toggle.
GATE — voice cluster. Note length, from clipped to legato. Deep: default 0.6; stays live for MIDI even when the voice is muted.
TOUCH — voice cluster. How each note is played: struck → natural → bowed. Deep: default 0.5; shapes the amp envelope per note, and on FM also shapes the index attack. (Ignore the "placeholder" comments in the code — it is fully wired.)
DETUNE / INDEX / TILT — voice cluster (relabels per engine). SUB: DETUNE (cents of spread). FM: INDEX (brightness/β). WT: TILT (dark↔bright). Deep: a moon target (detune).
BRIGHT → CUTOFF / CENTER / TONE / VOWEL / FOLD — voice cluster (relabels per filter). The main tone control; its name follows the filter character. Deep: default ~1.0; moon target stays bright.
RESO → RESO / RING / SHARP / SYMMETRY — voice cluster (relabels per filter). Resonance / emphasis; name follows the filter. Deep: moon target stays reso.
SUB — voice cluster. Level of the sub-octave reinforcement. Deep: default 0.15.
SYNC / FEEDBACK / NEW WAVE — voice cluster (relabels per engine). SUB: SYNC (hard-sync, off → Nx). FM: FEEDBACK (grit into noise). WT: NEW WAVE (click to grow a new wave; right-click for the previous; shows the seed #hash). Deep: moon target sync.
FILTER — 7-segment screen in the voice cluster. Cycle the filter character: 12 clean / 24 moog / bP bandpass / Cb comb / AE vowel / LG west-coast gate. Click to cycle, scroll to step.
The Wave Dial — beside the dish. Drag ↕ to morph the wave; the face shows it live. Relabels per engine: SHAPE (SUB, tri→saw→sqr→pulse) / RATIO (FM, an orbit) / GROW (WT, a stacked "table"). Double-click resets — in WT it grows a new wave. Deep: a moon target (shape).
AIR — the top-right effects
ECHO — AIR. A ping-pong delay send (it's delay, not reverb — lows and highs erode each hop). Deep: default 0.26.
TIME — 7-seg screen below ECHO. The echo's subdivision, long→short: 1/4 · dotted 1/8 (default) · 1/8 · 1/8 triplet · 1/16. Deep: tempo-synced with a slow glide; the default (dotted 1/8) is the historical sound.
SPACE (amount) — AIR. How much of the voice reverb (whose character is the SPACE row in the console). Deep: default 0.18.
SWARM — AIR. Chorus / ensemble width. Deep: default 0; internal key ens (was BLOOM).
CRUSH — AIR. Sample-rate + bit-depth reduction. Deep: a low-pass tracks the amount to tame aliasing (20k→~3.4k as you push it).
WOBBLE — AIR. Tape-style pitch warble. Deep: transparent at 0.
HEAT — AIR. Saturation drive. Deep: default 0; loudness-compensated; internal key sat.
GLUE — AIR. One-knob bus compressor on the master — it glues the whole mix, drums included. Deep: default 0; the dial doubles as a gain-reduction meter (glows amber past ~6 dB); internal key comp.
Most AIR effects are voice-only — CRUSH, WOBBLE, HEAT, SWARM, ECHO and SPACE only touch the voice, and the drums bypass them. GLUE is the exception: it's the master bus-compressor, so it glues the whole mix, drums included. Turn the
aircorner off to bypass the voice creative chain (the mastering chain, GLUE included, stays on).
Beat — the channel strips
KICK / SNARE / HAT strips — bottom-left. Each strip has a density column (drag to fill the lane), a steps count, a level knob (attenuate-only), and a send knob (reverb send). Deep: KICK never sends — its send slot hosts FEEL instead.
FEEL — in the KICK strip. Global drum-mutation amount: how much the beat slides, sprouts and prunes its own hits. Deep: default 0.05; when above 0 the density bars turn spore-pink.
DNA — beat stepper. The kit: ORGANIC / 808 / 909 / 707 / LINN.
ROOM — beat stepper. The shared drum-reverb tail: ROOM / PLATE / HALL / GATE / SPRING / DUST.
beat / voice faders — section headers. Bus levels. Deep: beat default 0.70; voice default 0.42 (headroom-capped). Master is fixed at 0.7 (no master volume control).
Timing
ROTATE — 9 o'clock dial. Rotate the whole loop forward/back (wraps). Amber; resets to 0.
SWING — 9 o'clock dial. Off-beat 16th lean. Deep: default 0.54, range 0.5–0.75; not modulatable.
Moons (the two LFOs)
Moon A / Moon B — free-floating. Each: drag the face for depth, a rate button (4 bar … 1/16), a wave button (sine / tri / ramp / sqr / s+h), and a spore plug. Drag the spore onto any knob, the dish, the GLAND arc or the Wave Dial to patch it; drop on nothing to unpatch. Deep: Moon A (cyan, default 1 bar) is the strain's, Moon B (purple, default 1/4) is the gait's — picking a preset patches or clears its moon, and most presets leave it empty.
Transport
play — play / pause (space). Pause lets tails ring out.
stop — hard stop; silences everything including tails (green square).
rec — record the output to a .wav (pulses while recording). Deep: 16-bit stereo with dither — "feed it to the MPC."
rewind — the amber coil. Rewinds the loop 5 seconds per click; click again within a few seconds to go further back.
SPAWN — the purple spore. Rolls a whole new creature — filter, engine and all — but keeps your key, tempo, volume and locked notes.
Patch slots
disk — save the current creature to the next free slot (a full bank overwrites the oldest).
slots (×5) — click a lit slot to recall it. Deep: stored in your browser (localStorage).
trash — arm delete, then click a lit slot to clear it.
Utility bar
help — opens the field guide ("start here").
midi — opens the MIDI panel; lights teal when MIDI is live.
eye — show/hide all knob values (the old "123" toggle, now an eye glyph).
The banks
strains — the cyan chips under the dish: voice presets. The ring swaps per engine. Editing a strain dims its chip to ≈; click it to return.
gaits — the amber chips: beat presets (tempo, swing, fills, and the beat's feel). They never touch your melody.
Engines (the voice core)
Subtractive — the default. Detuned tri→saw→square→pulse oscillators with optional hard sync and a sub-octave. Knobs: SHAPE, DETUNE, SYNC, SUB.
FM — 2-operator phase modulation (pitch-stable). Dial steps the RATIO; DETUNE becomes INDEX (brightness); SYNC becomes FEEDBACK (grit→noise). Each strain carries its own index-decay; TOUCH shapes the index attack; DRIFT wanders the operator. UI tints orange.
Wavetable — a seeded, growable spectrum. The dial GROWs partials in; DETUNE becomes TILT (dark↔bright); SYNC becomes NEW WAVE (click to grow a new seed, right-click for the last). Held notes breathe with an automatic morph the DRIFT knob deepens. UI tints violet.
Strain rings per engine — Subtractive: dew, string machine, acid, one-oh-one, rip, brass, music box, computer world, init. FM: rhodes, glass, marimba, klang, bloop, brass, flute, lately, tubular. Wavetable: glasswing, loom, hollow, choirbox, driftwood. (init is a blank-canvas chip — it wipes the voice but keeps your climate, mutate and sequence.)
Filters & the west coast
Six characters, set by the FILTER screen. The two tone knobs relabel to fit each one.
- 12 — clean. Gentle 12 dB/oct lowpass. (CUTOFF / RESO)
- 24 — moog. Resonant 4-pole ladder, can self-oscillate. (CUTOFF / RESO)
- bP — bandpass. A moving band. (CENTER / RESO)
- Cb — comb. Tuned resonator that tracks the note. (TONE / RING)
- AE — vowel. Two formants — vowel-like. (VOWEL / SHARP)
- LG — west-coast gate. A wavefolder into a vactrol-style low-pass gate. (FOLD / SYMMETRY)
West-coast (LG) mode. Choosing LG does more than swap a filter. The voice gains a wavefolder and a coupled low-pass-gate envelope (one motion opens cutoff and level together); TOUCH becomes strike-vs-open. The GLAND sequence now drives FOLD instead of cutoff, so you're sequencing timbre. The RANGE strip gains a HOLD dot (one continuously sustained drone) beside the always-present pedal, and the dish nodes show the timbre contour rather than pitch. It works under all three engines. (There's no separate EAST/WEST switch yet — selecting LG is how you enter it.)
FREQ (Hz) mode. Click the SCALE label to leave notes behind entirely: pitch becomes continuous frequency, RANGE becomes SPAN, and the NOTES/OCTAVE rows hide. Independent of the LG voice.
The signal chain
Voice path: oscillator (engine) → filter (character; or wavefolder + low-pass gate in LG) → the voice-only creative chain: CRUSH (→ aliasing-tamed low-pass) → WOBBLE → HEAT → voice fader → master. Three more voice effects tap off in parallel and return to master: SWARM (chorus), ECHO (ping-pong delay) and SPACE (reverb).
Drum path: kit voices → per-lane level → beat fader → master, with a parallel ROOM reverb send (snare + hats) returning straight to master. Drums skip the voice creative chain but still hit the master EQ, GLUE and loudness.
Master (always on), where everything sums: translation EQ (30 Hz high-pass, a low-mid de-mud, an air shelf, bass folded to mono below ~120 Hz) → GLUE (the master bus-compressor) → loudness (drive → compressor → a dynamic 3.8 kHz tamer → trim → true-peak brick-wall limiter) → out. Master gain is fixed; there is no master volume knob.
Sequencing & mutation
The loop. Steps hold continuous positions, drawn as nodes orbiting the dish. LENGTH sets 16/32/64; FILLS sets how many sound (Euclidean); ROTATE turns the loop; GATE, RANGE, OCTAVE and ROOT shape pitch and length.
Quantising. Notes are drawn from whatever's lit in the NOTES grid (seeded by SCALE), not the scale directly. One note lit = a flat drone; none lit = the root.
Mutation (the Turing-machine heart). Each pass, every step has a MUTATE chance to reroll its pitch and its GLAND (tone) value. Locked steps never change. Freshly-mutated steps briefly play louder (a "novelty lean") that fades.
Velocity. Three forces blend — a metric pulse (downbeat accents), the novelty lean, and humanise jitter — all scaled by EMOTE. The same velocity feeds the internal voice and MIDI out.
Drums. Three lanes (kick / snare / hat) with Euclidean seeds. Drum mutation slides, sprouts and prunes hits within limits set by the gait's feel — where hits may land and how they accent — so the density stays musical. FEEL sets how much; mutations flash spore-pink on the dish.
Gaits. A gait (floor / dilla / disco / reich / berlin / halftime) is a beat preset: tempo, swing, lane fills and the beat's feel — how hits accent and how the timing leans (tight, dragging, rigid, phasing). Beat-only; it never touches the melody. (A couple of gaits, like berlin and halftime, also patch Moon B; the rest leave it empty.)
SPAWN randomises everything unlocked — slots, gland, knobs, filter, engine (roughly a quarter chance each of FM and WT), strains and moons — while preserving key, tempo, volume and locked notes.
REWIND keeps a rolling ~2-minute history and steps the loop back 5 seconds per click.
MIDI
Nothing transmits until you pick a port — the panel is inert by default. Open it from the midi tag.
- enable — request Web MIDI access and start transmitting.
- voice output + channel — the melody (default channel 1).
- gland → cc — send the per-step GLAND as a CC (default 74), 7-bit or 14-bit.
- beat output + channel — drums (default channel 10; kick 36 / snare 38 / hat 42).
- route —
internal + external/internal only/external only(the internal kit and the MIDI send are independent). - input — MIDI in: clock-in tempo plus note/CC events, with MIDI-learn.
- clock + transport — send 24-PPQN clock and start/stop. Notes swing; the clock does not.
- nudge — per-destination latency trim in milliseconds.
Settings persist in your browser and restore by port name. Melody notes carry the musical velocity described above.
Keyboard shortcuts
- space — play / pause
- f — cycle the engine
- Hover almost anything for a one-line hint.
Contact
Questions, bug reports, or just want to share what grew? Email hello@tendrilsynth.com.