me
now
180G{DATA}
015
2026
GENERATIVE
∞ : ∞
THE WORK
A browser-based piece seeded by the Bitcoin blockchain. The machine speaks in the language of crypto — rekt, fomo, wagmi, hodl, rug — words that exist in their fullest sense only as speech acts, promises, warnings, declarations. The TTS engine is not a tool for rendering text. It is the subject.
The rhythmic pattern is derived from the current BTC price, delta, and spread, converted into Euclidean rhythms across four voices. The machine does not know what it is saying. It fires tokens at pitch-shifted rates against a continuous loop, mutating its phoneme pools over time. Occasionally a word is allowed to complete — spoken slowly, filling the screen.
TWO CHANNELS
The piece runs differently depending on the browser. In Safari and Firefox, the machine speaks — Web Speech API fires phonemes through a synthetic mouth, routed through a tape processing chain. In Chrome, TTS is suppressed at the engine level. The machine routes instead through an audio palimpsest: 81 recorded samples triggered at the same Euclidean rhythm, each new layer decaying slowly over the last, older material still audible as a trace beneath the current strike. The flood stream on the left receives per-row packet-log tokens in place of speech — state failures, dropped references, contract reversions — synchronised to the sequencer. Voice and signal are not the same output.
DEFAULT VOICE
Where available, the machine defaults to Kyoko (ja-JP) — a Japanese female voice speaking an English lexicon it was not built for. The mismatch is intentional. A voice optimised for one phonological system mispronouncing the slang of another. The accent is not an error. The choice of Kyoko foregrounds the voice as mechanism rather than presence — a synthetic mouth shaped for different sounds, conscripted into a foreign tongue.
On systems without Japanese voices, the machine falls back through O-Ren, Haruka, Zira, and finally whatever the system offers. Every voice produces a different instrument. Voice selection is unavailable in Chrome.
A-SIDE / B-SIDE
The A-side is the listening surface. In voice mode, words accumulate as an everscrolling concrete poetry piece, right-justified. In signal mode, packet-log tokens accumulate on the left — the machine's failed transmission rendered as text. Flip to B-side to expose the grid, tape processing, and voice selection. The backing audio crossfades across three tracks in a continuous loop.
LABEL
180G{DATA} — 015 — DORKHOLM — 2026
VOICE SYNTHESIS
Speech output uses the Web Speech API (SpeechSynthesis). Four logical voice rows — KICK, SNARE, HAT, BASS — fire tokens at pitch and rate values tuned to their rhythmic register. Each row carries a phoneme pool of 20 words; pools mutate over time. A gate flag per row prevents queue buildup — if a row is still speaking, the next trigger is dropped.
BROWSER SUPPORT
Safari (macOS/iOS) and Firefox: Web Speech API runs with full voice libraries. The machine speaks through a synthetic mouth. Phoneme pools fire at pitch-shifted rates. This is the voice channel.
Chrome: TTS is suppressed by the Media Engagement Index — synth.speak() outside a synchronous gesture is silently dropped. Rather than treating this as failure, Chrome runs a parallel Web Audio signal engine: KICK fires a sine burst with waveshaper distortion; SNARE fires bandpass noise; HAT fires high-passed noise ticks; BASS fires a sawtooth glide. The flood stream receives per-row log tokens — packet events, state leaks, contract failures — synchronised to the same Euclidean sequencer. Full-word moments push the phoneme itself at giant scale. Same rhythm. Different channel. Mouth vs network.
SEQUENCER
Rhythm is generated as Euclidean patterns seeded by the Bitcoin price feed (blockchain.info/ticker, refreshed every 8s). Price, delta, and spread map to onset density, offset, and rotation across the four rows. The Web Audio API provides the timing backbone — a lookahead scheduler fires 80ms ahead, independent of the TTS chain.
TAPE PROCESSING
Safari/Firefox voice output passes through a Web Audio processing chain: highpass (180Hz) → saturation waveshaper → lowpass (3800Hz) → delay with LFO wow/flutter modulating delay time → wet/dry mix. The tape controls on B-side address this chain directly. In Chrome, the signal engine fires directly to ctx.destination — no tape chain, clean impulse.
SEED
Each session derives its initial Euclidean pattern from live BTC data. The pattern is not stored. Close and reopen the page and the seed may differ. The blockchain is the score.