Known request
The test creates a sine oscillator, applies a short envelope, and routes it to the selected digital channel.
oscillator → merger → gain → output
Instrument 001 Web Audio / QA field kit
A transparent, open-source test bench for browser audio output. Generate controlled signals, inspect the active audio context, and run the same repeatable checklist across devices and browsers.
01 Controlled output
Choose a digital channel and reference frequency, then confirm the physical result yourself. The browser controls the signal—not your operating-system volume, amplifier, or transducer.
Start with low system volume. Stop immediately if the tone is uncomfortable.
Signal is stopped.
02 Interpretation
A browser signal is evidence about a requested digital path. It is not an automatic hardware diagnosis.
The test creates a sine oscillator, applies a short envelope, and routes it to the selected digital channel.
oscillator → merger → gain → output
You confirm which physical speaker played, whether the level was balanced, and whether the sound was clean.
listen → compare → record
Use the result to narrow the route, setting, connection, or device that should be checked next.
Read the audio testing methodology ↗03 Repeatable QA
Use the field sheet before meetings, releases, browser updates, or device reviews. It covers output, input, permissions, Bluetooth behavior, accessibility settings, and cleanup.
BaselineRecord system output, app volume, connection type, and sample rate.
ChannelsConfirm left, centered stereo, and right at a moderate listening level.
InputRequest microphone access only after a user gesture; verify deny and allow paths.
RoutingReconnect wired and Bluetooth devices; repeat after browser restart.
CleanupStop tracks, close the audio context, revoke permissions, and record anomalies.
04 Inspectable by design
The engine is deliberately small: a user gesture creates the context, channel routing is explicit, gain is expressed in dB, and every run has a bounded fade-in and fade-out.
// A bounded, user-triggered reference tone
const oscillator = context.createOscillator();
const gain = context.createGain();
oscillator.frequency.value = 1000;
gain.gain.setValueAtTime(0, now);
gain.gain.linearRampToValueAtTime(
dbToGain(-24), now + 0.04
);
oscillator.connect(gain).connect(
context.destination
);
oscillator.start(now);
05 From QA to repair
For an end-user sound test with guided, system-specific troubleshooting, continue with Online Sound Test.