Record ~3s of the live master mix into a buffer via a recorder AudioWorklet
tapping the full post-FX bus, then replay it pitched across the keyboard
(playbackRate = 2^((midi-60)/12), middle C = unity). Runs through the same
FX chain as every voice, so `crush` gives it the classic 12-bit sampler grit.
Right-click sky → 🎛 GODSONIQ to sample / re-sample; 🎸 string voice exits
back to the FM tine. Capture path verified: full-amplitude sawtooth recorded
clean (peak 0.98, rms 0.49) over the realtime port round-trip.
Grimoire (truth) + manual Appendix J updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The two voices native Web Audio can't do safely, done as one AudioWorklet module
(loaded from a Blob URL, so still single-file):
- 🎸 Karplus-Strong string — a sample-accurate 8-voice plucked-string worklet
(noise burst → damped delay loop). Right-click sky → "string voice" swaps the
FM tine for it. Verified offline: STABLE (rms 0.04, not the billions the native
version exploded to), in-tune (A3→221, A4→436), harmonic.
- 🔊 12-bit bitcrush — a world-drivable lo-fi stage on the master bus (true
bit-depth quantise + sample-rate reduction). Route anything to `crush`; clean
by default (16-bit → 4-bit + downsample). Verified: transparent at 16-bit,
hi-freq grit 0.18 at 4-bit.
Loaded async on synth start, spliced glitch→crusher→out and karplus→preSat.
Verified live: both load with no errors, string-voice toggle flips correctly.
Grimoire + manual document the whole synth-voice suite.
This closes the timbre work: FM tine · supersaw · chorus · string · bitcrush —
every one tuned by the offline-render + FFT harness before it made a sound.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The whole visual now zooms: scroll or trackpad-pinch to zoom the canvas toward
the cursor (1×–6×), drag empty space to pan when zoomed, double-click to snap
home. Implemented as a CSS transform on #stage (smooth, no draw-loop surgery);
all four hit-test chokepoints (mousedown/move/up/contextmenu) invert the zoom so
clicking/dragging/right-clicking nodes still lands exactly — provably correct
(the inverse of the transform). Pan clamps so the canvas always covers the view.
Grimoire + manual note the gesture.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The grimoire got big, so give it a proper entrance:
- ⚡ Quick-start card up top: a 7-step "make it sing in a minute" on-ramp for the
generative sequencer (scale → euclid → Play One → ratchet → p-lock → play).
- ☰ contents: a floating, jump-anywhere table of contents built from the 22 h2
sections (delta-based scroll so it lands reliably in any layout). Sits beside
the × close, drops a clean index panel, closes on pick or outside-click.
Verified: quick-start renders (7 steps), TOC lists all 22 sections and jumps
distinctly (Getting in→top, Playing it→far). Manual regenerated to match.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Steal the one clever idea from the PO/Elektron world: p-locks. A CC/texture
voice (filter, glitch, reverb, drive) now gets a per-step LOCK lane — pin its
value to a blocky level on any step, overriding the world there; drag a step
below the lane to unlock it and hand it back to the data. The filter jumping to
a different cutoff on every hit, disjointed and alive — a full groovebox.
- applyGroove(sq, step, world) unifies the gate + p-lock; computeDests calls it.
- lock[] rides on seqs (serialised, migrated). Note voices keep velocity/chance/
ratchet; CC voices get the p-lock lane (amber).
- self-check guards all four cases (no-groove / lit-unlocked / dark / locked).
- grimoire + manual updated (also documents the Juno chorus).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The flagship fix from the wired audit: skins were visual-only (the mix was
identical across all 14). Now the active Spirit re-tunes the Matter — each
skin's home tonality (its first station's scale) becomes the global scale, so
BOTH the sequencer and the ambient data-melodies re-harmonise when you turn the
wheel of cosmologies. Verified: 10 distinct tonalities across 14 skins
(chakra→B hirajoshi, wuxing→A dorian, wheelyear→F major, futhark→G# pentatonic…).
- skinHomeScale() derives {root,scale} from the skin's own station data (no
hardcoded map); applySkinScale() sets gScale on skin change + at init.
- computeDests overrides the ambient note quantize to follow gScale.
- the sequencer already followed gScale, so it re-tunes for free.
- grimoire updated: "choose your spirit and the same planet plays through it"
is now literally true. Manual regenerated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Retire the wired-audit debt so nothing is decorative-pretending-to-be-wired:
- FREEZE now works: a group freeze snapshots each member and holds it (was a
set-but-never-read flag). Verified: holds 0.2 while the source moves to 0.9.
- .mid export is full-fidelity: real per-step velocity + ratchets expanded to
sub-notes (was hardcoded vel 100, single hits). Chance/Play-One stay live-only
— honest for a deterministic file.
- Hide the level/trim sliders on note voices (they never applied to a pitch —
no more dead sliders).
- Grimoire honesty: soften "every source is a real measurement" to name the
honest models (demographic tide, room-sensor sim); drop the phantom ⚙ SPELLS
panel claim. Manual regenerated to match.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The last piece from the glitch-drum workflow: a per-step ratchet lane (1–4) —
each step can re-fire that many sub-hits within its slot, for instant rolls and
32nd-note glitch from a single step. Fired via short setTimeouts inside seqTick;
combined with Play One, every sub-hit re-rolls the note. Verified live:
rat3→3 hits, rat4→4, rat1→1, empty step→0. Self-check guards the rat default.
Now the generative loop is complete: Euclidean picks the rhythm, Play One the
pitch, ratchets the subdivision, the Groove the feel, follow-actions the
structure — and the global Scale keeps it all in key. Grimoire + manual synced.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Global Scale (Live 12 Scale Awareness §3.13): a root + scale the whole groove
editor sings in. The piano-roll rows ARE the scale degrees (always folded to
scale), so every melody is in key; change the scale and drawn patterns
re-harmonise in place. Travels with the patch.
Play One (adapted from Ableton's Group Notes → Play One): a piano-roll column
can hold several candidate degrees — stack them (they turn blue) and the
sequencer picks one at random each fire. Stack in-scale notes under a fast
Euclidean fill and the line glitches itself, always in key. Applied in both
grid editors, seqTick, and .mid export (prints the first candidate).
Self-check guards scaleRows + the stack helpers. Grimoire + manual in sync.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Live 12's Euclidean generator (manual §11.3.5) on the groove grid: spread N
pulses as evenly as possible over the pattern, with adjustable steps (cycle
length) and rotation, tiled into the 16-step grid. E(3,8) tresillo, E(5,8)
cinquillo, E(4,16) four-on-the-floor — one control fills any groove or gate
lane (note lanes fill the root). Verified live: E(4,16)→[0,4,8,12],
E(3,8)→[0,3,6,8,11,14], E(5,16)→[0,4,7,10,13]. Self-check guards the
canonical patterns. Grimoire + integrated manual updated to match.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rebuild GODSTRUMENT_MANUAL_SOURCE.md as a single finished grimoire, no drift:
- PART I is the current in-app grimoire (viz/index.html — the source of truth)
converted verbatim, so it now covers the Groove, follow actions, and every
feature the live prose does.
- Appendices A/C/D regenerated straight from config.json (83 sources, 56 cables,
14 vibes); B/E–J carried and refreshed, with the Groove / per-step expression /
follow actions added to the feature-systems appendix.
- dropped the old "brief for the manual writer (Gemini)" scaffolding — this
document IS the finished grimoire now, not a brief to write one.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Eight trigrams in the King Wen Later Heaven ring, south at the top as
the compasses have it, every feed seated by the Shuogua's attributions:
quakes at zhen the thunder-shock, the word at dui the mouth, the moon
at kan, the sun at li, your own hands at gen — "Gen is the hand." At
the centre the two loudest trigrams stack into a live hexagram, named
from all 64 by the King Wen table; silence rests at 11, Peace.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Concerning the Spiritual in Art (1911) taken at its word: six pigments
round a wireframe palette, weiß the canvas on the easel, schwarz the
final pause, his four great contrasts strung dashed between the drops —
and every feed seated by the feeling of its colour, each colour keyed
to the register of its instrument. Paint strokes itself onto the canvas
as the data sings. Plus GODSTRUMENT_MANUAL_SOURCE.md (the manual's
source doc) and its Appendix E entry for the new skin.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>