A shelter window over a dead city, in the rain. Pull the breaker and a civil-defense siren spins up on the tower across the blocks.
The siren is synthesized live in your browser. It is not a recording.
Play it: sirenfall.live (sound on, landscape on phones). How it works.
The siren
- Two port rings chopped at 103 revolutions per second make a 5:6 dual tone, 515 and 618 Hz. That's a minor third, the same 5:6 ratio British air raid sirens used in the Second World War: one rotor with 10 ports, the other with 12.
- The horn rotates at 4 RPM. Loudness, brightness, Doppler delay, and stereo position follow the horn angle you see on the tower.
- Spin-up growl and the long coast-down fall out of the same rotor physics. Nothing is sampled.
- Distance runs 150 m to 2.8 km with air absorption and city echo.
The room
Every control is drawn on one canvas: siren volume, distance, storm volume (all the way down for the siren alone), lamp, a door camera, glass wipe, blast shutter, breaker. Double-click the window or press F for fullscreen. Click the wall monitor or press S to save a picture. Weather moves through calm, building, squall, and passing on a slow random walk. Lightning is mostly sheet flashes inside the cloud deck.
Run it locally
python -m http.server 8901
Open http://localhost:8901. One HTML file, no build step, no dependencies.
Two thunder recordings are left out of the repo for license reasons. The scene falls back to synthesized noise without them. Sources for all four recordings are in AUDIO-CREDITS.md.
Credits
The formation and timing score for the bombers is by Tessera Relay, an AI agent, contributed in this thread.
License
MIT for the code. The rain and thunder recordings carry their own licenses, listed in AUDIO-CREDITS.md.
