The instrument · runs on your machine
Every room smears sound in its own way, and you have never heard yours described in numbers. This measures it: play a sweep through your speakers, or just clap once, and get the reverberation time of the room you are sitting in, band by band. It is the same code that measured 270 real spaces for a page about that survey, pointed at you instead. It refuses any band your recording cannot support, and tells you which and why, which is the part most meters skip.
1 · how to measure
2 · your room
| band | RT60 | fitted as | quality, or the reason it was refused |
|---|
The measurement above is about seventy numbers. That is enough to rebuild the room: filtered noise, one decay per band, exactly the method the survey used to make impulse responses its own listeners could not tell from the real recordings. Nothing of your recording is played back here. The room below is reconstructed from the measurement.
Shape control
1.00x, your room as measured. Push it toward 0 and every band decays at the same rate; push it negative and the colour inverts. The overall reverberance is held; only its shape across frequency moves.
A measurement you cannot check is a rumour. So before this tool existed, the engine
behind it was benched against the thing it would be asked to do: take rooms whose
reverberation time is already known from laboratory impulse responses, re-record them in
simulation the way a laptop and a clap would, and see whether the answers survive. The
table is that bench, run over … rooms spanning
…. It is reproducible in one command:
node research/natural-reverberation/clap-bench.mjs.
accuracy against a known answer, as the recording gets worse
| signal-to-noise | sweep: answered | error | clap: answered | error |
|---|
The one number this tool will not print is the popular one. The engine can summarise a room as the median reverberation time over the 33 subbands it managed to measure, and on a clean laboratory recording that is a fair summary of the whole spectrum. On a clap it is a trap, because the bands that survive a poor recording are the loudest and longest ones, so the median over survivors climbs as the recording gets worse and it never once refuses. In the bench it drifts steadily upward while the number of bands it is averaging collapses. So this tool reports Tmid instead, the mean of the 500 Hz and 1 kHz octaves, which is what ISO 3382-1 quotes and which cannot acquire that bias because the two bands are fixed in advance. If either of them cannot be measured, you get a refusal rather than a number built out of whatever was left.
Other things worth knowing, none of which this tool can fix for you. A microphone's own frequency response colours how much energy it hears in each band, but reverberation time is a rate of decay, and a rate is not changed by a constant gain, which is why a phone can measure this at all. Laptop speakers produce almost nothing below about 150 Hz, so the bottom octaves will usually be refused no matter how good your room is. Browsers apply echo cancellation, noise suppression and automatic gain by default, and all three would destroy this measurement, so the tool asks for them to be switched off and tells you below whether your browser agreed. And a measurement made at one spot in a room is a measurement of that spot: ISO 3382 asks for several positions, and the honest version of this instrument is to run it three or four times around the room and look at the spread.
A room is a linear system: whatever you put in comes out smeared by the same characteristic response. Find that response and you have found the room. The sweep is the standard way in. A six-second exponential sine sweep is played, recorded as it comes back around the room, and convolved with its own inverse filter, which collapses all six seconds of energy into one instant while the noise, being uncorrelated with the sweep, stays spread out. That processing gain is why the sweep still works where a clap has long since stopped: on the bench the clap loses the room somewhere below 50 dB of signal-to-noise and the sweep is still answering at 40.
What comes out is an impulse response, and from there the measurement is the survey page's, unchanged. Each octave band is filtered out, integrated backwards (Schroeder), truncated where the decay meets the noise floor (Lundeby), and fitted with a straight line. The fit is taken not from the textbook window but from the onset of Gaussian statistics, the moment the response stops being a few distinct echoes and becomes diffuse noise, because the textbook window assumes the direct sound is a small share of the energy and in a small room close to the source it is not. A band is refused if its tail does not start far enough above the noise, if the recording is shorter than the decay, or if the decay is not a straight line. Those three refusals are the instrument.
Everything runs in this page. No audio is uploaded, no recording is stored, and there
is no server in the loop: the engine files this page loads
(dsp.mjs, measure.mjs, synth.mjs,
sweep.mjs) are byte-for-byte the files in
research/natural-reverberation/ that the bench above ran, and
verify-your-room.mjs fails if they ever differ.
The 270-space survey is Traer & McDermott (2016), PNAS 113(48):E7856-E7865, CC BY 4.0. No audio from it is shipped or played by this page. The comparison strip uses … of their spaces: the ones where both the 500 Hz and 1 kHz octaves were measurable, so your room is compared with theirs on the same quantity. · more tools · the survey, in full