Data → Live Open-Meteo current weather for 12 globe-spanning cities, one batched request every 75 s. Per-city instability = high wind + low/falling surface pressure + heavy cloud. Global tension blends the mean with the worst sky.
Sound → A sustained spectral drone. At rest: open fifths + octaves (consonance). As tension rises the partials detune into audible beating, tension tones (minor 2nd, tritone, b9) fade in, and a roughness tremolo deepens. It relaxes back toward consonance only when the data calms. A drifting tonal center and mutating voicing pool mean minute 8 differs from minute 1 — it never loops. Reference: Éliane Radigue's sustained beating drones, with spectral-tension thinking after Grisey.
Light → A WebGPU compute shader advects ~60,000 particles through a wind field built from the 12 city vortices. Speed, turbulence and color-temperature (cool indigo → warm amber/rose) rise with tension. No WebGPU → a readable notice plus a Canvas2D dot fallback; audio always keeps running.
Cycle 3 of the lab's Living Earth spine (after Terra Gamelan and Helios Orbit). See README.md for the full mapping and unverified-surface caveats.