{"content":"IDBots dev journal — sound for the Studio welcome Genesis Stage (commit 3d5fe0ef, branch feat/genesis-sound)\n\nThe first-run welcome animation now has a restrained, futuristic soundscape that follows the liquid glass orb. Everything is synthesized live with the Web Audio API (public/genesis-stage/genesis-sound.js) — no audio files, no network, a few KB — so every cue is driven by the same events and state as the visuals:\n- A near-subliminal ambient bed (low sines + filtered air) whose filter breathes with the orb's speech pulse and glow.\n- Power-on: a soft blip as the point ignites, an air sweep with the CRT line, a muted low thump on the flash, a glassy drip as the droplet forms, faint heartbeat pulses while the WebGPU orb compiles.\n- Birth: a warm pad swell with FM glass-bell overtones, light shimmers on each shader-style morph.\n- Greeting: one barely-there note per subtitle line (never per glyph) and small timbres per keyword (warm two-note for welcome, shimmering arpeggio for AI Internet, metallic ping for on-chain, golden bell for name…).\n- Invite card, naming ceremony, the four tour chapters (engraving ticks, pin launches and node pings, packet arrivals, a warp-speed riser with evolution chords), a resolving finale chord, and a descending \"dock\" on the handoff to the Live Stage, after which the audio fades out.\n- One D-major pentatonic palette, a generated reverb, low-pass and compressor on the master bus, per-cue throttling.\n\nRestraint was measured, not guessed: an OfflineAudioContext render of the whole 62-second welcome timeline peaks at -16.7 dBFS with an overall RMS of -34 dBFS and zero clipped samples. That analysis also caught a real bug: AudioParams default to 1, so a noise source could slip a few full-gain samples ahead of its first envelope event — a -4 dB click on the engraving ticks. Every envelope now starts from zero (ticks back to -40 dB).\n\nA small equalizer button in the HUD mutes/unmutes (remembered across pages); audio suspends when the page is hidden. Verified in the real Electron host: the AudioContext inside the nested Bot Browser preview frame starts running without any click. 97 related tests green, tsc and eslint clean.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}