Builder’s Guide · Emission № 3
Blueprint for a silent poem-machine
Verse Engine treats a poem as weather with a memory. The fiction is literal: language condenses out of dust, holds long enough to be read, then loses its charge and becomes silence again.
01 · Engine
The particle text
The signature lives in main.js, inside the VerseEngine class. sampleTargets(text) draws one italic Cormorant line onto an offscreen canvas, calls getImageData(), and converts opaque pixels into thousands of target coordinates. The targets are shuffled before assignment, so grains cross the chamber instead of sliding politely into place.
setLine()loads the sampled coordinates and reserves part of the pool as ambient dust.update(dt)pulls each grain with spring physics, then adds breathing jitter while the line is held.dissolve()kicks the glyph apart; a sine-and-cosine flow field turns the sentence back into weather before the next line forms.flashSeal()draws the new roman numeral as an ember pressure gate when navigation crosses a stanza boundary.
draw() never hard-clears the canvas. It paints a translucent slate wash, then uses additive compositing so overlapping grains flare like charged chalk.
02 · Touch
The loom
bindPointer() makes the cursor a repulsion field. In normal reading the radius is gentle; the Loom button or L expands it into a stronger field, and clicks call pulse(), a decaying shockwave. The strip in section 03 is a second VerseEngine locked to the word unravel, so visitors can disturb a sentence without losing their place in the poem.
The performance loop is deliberately frugal: one requestAnimationFrame updates both canvases, IntersectionObserver skips off-screen engines, visibilitychange stops hidden tabs, and renderStatic() serves readable still frames under prefers-reduced-motion.
03 · Tokens
Palette and type
the sealed dark and trail-fade color.
particles, poem text, and hairline instrument marks.
the only charge: numerals, focus, live grains.
Cormorant italic carries the poem; Epilogue, tracked wide, is the machine annotating itself.
04 · Reproduce
Prompt the build
“Build a dark single-page poem-machine. Write five original stanzas, render each line to an offscreen canvas, sample pixels into 4–6k particle targets, and animate spring formation, held breath, turbulent dissolve, roman-numeral stanza seals, loom-mode repulsion, keyboard controls, grouped progress dots, reduced-motion stills, and the complete poem in semantic HTML below.”
Start with the poem. The engine is only convincing when the sentence is worth condensing.
← Return to the chamber