Sound generated in code
Synthesize convincing rain and thunder in the browser instead of playing prerecorded loops.
The goal was to create realistic rain and thunder entirely in JavaScript: a small, dependency-free library with a live soundscape editor. The experiment produced very good sound, but it also found the practical limits of browser-based synthesis.
Synthesize convincing rain and thunder in the browser instead of playing prerecorded loops.
Expose the layers and parameters behind the sound so each storm can be shaped and saved as JSON.
Package the engine as a lightweight TypeScript library that can run without external audio assets.
Experiment findings
NoiseD can generate very convincing sound, especially with fixed parameters. The performance wall appears as the sound becomes more complex: because every layer is generated in JavaScript, timing becomes less reliable and playback can get flaky.
Live editing adds another challenge. Timing issues can accidentally double sound layers, and those duplicates accumulate over time. That problem does not affect a soundscape running with fixed parameters and may be fixable, but the browser is not a natural sound-processing platform. Solving it would take more effort than the result justifies, so NoiseD remains a useful experiment rather than a production-ready audio tool.