synthesize-sound
Synthesize sound
This skill reviews procedural UI sound built with the Web Audio API. It checks the context, the envelope and the click parameters.
Every check is a pair. The broken line sits beside the line that replaces it.
One AudioContext for the page is required. An exponential ramp must not target 0. Whether a sound should exist at all belongs to interface-sound.
When to use
Use this when implementing or reviewing a click, a pop or a confirmation tone made with oscillators or noise. Use interface-sound for mute, volume and which actions may play.
1. Find the graph
Read the files in scope. List each AudioContext, buffer, oscillator, filter and gain ramp. If sound is only from files, hand the review to interface-sound.
2. Check the context and the envelope
Reuse one context. A function that calls new AudioContext() per cue is context-reuse-single. If state is "suspended", call resume() before starting a node. That is context-resume-suspended. On onended, disconnect the source and the gain. That is context-cleanup-nodes.