I set out to build a very small browser tool: press a button, play a short low-frequency sweep, stop after 30 seconds.

The first prototype was maybe twenty lines of Web Audio code. The version I shipped is still small, but the hard part turned out not to be generating a tone. The hard part was making the tone behave like a decent citizen on a phone: start only when someone asks for it, avoid an abrupt click, stop when the tab disappears, and leave nothing running behind the UI.

That made it a useful little case study in the difference between “the API works” and “this feels safe to put in front of people.”

The audio graph I actually needed

The sound path is deliberately boring: