NoiseD logo
Experiment TypeScript library

NoiseD

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.

Project goals

Sound generated in code

Synthesize convincing rain and thunder in the browser instead of playing prerecorded loops.

A flexible soundscape

Expose the layers and parameters behind the sound so each storm can be shaped and saved as JSON.

Zero dependencies

Package the engine as a lightweight TypeScript library that can run without external audio assets.

Experiment findings

Outcome & lessons

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.