All computation runs locally in your browser; audio never leaves the device.
Set the frequency and level range in "Axis / Display" below — the chart does not respond to gesture zoom.
Fundamental F0 / Tuning
Spectrum Peaks
| # | Frequency | dBA | Note |
|---|
Parameters
Capture
The larger the FFT, the finer the frequency resolution, but latency and overhead grow. On mobile, 2048–4096 at 30 fps is recommended.
Noise Reduction
Browser noise suppression alters the frequency response, so it is best left off for measurement; capture restarts automatically when you toggle it.
Analysis
With envelope decay = 0 peaks are held indefinitely; the larger the value, the faster they fall back.
Peak Markers
The prominence threshold filters out glitches; raising it keeps only significant peaks.
Axis / Display
The display range can only be set here. The chart ignores dragging and wheel zoom, so the range cannot be changed by accident.
The browser can only report levels relative to full scale. Measure the same source with a known sound level meter and enter the difference as the calibration offset to approximate dB SPL.
Manual / Shortcuts / How it works
Shortcuts
Space Pause / resume F Fullscreen R Reset peak hold N Capture noise floor S Screenshot T Toggle theme L Log / linear axisDisplay range
The chart ignores dragging, wheel and double-click zoom, so touch input cannot change the range by accident. Frequency limits and level limits must be entered in the "Axis / Display" group; the band presets switch them in one click, and "Reset Display Range" returns to 20 Hz – 20 kHz / −110 … −10 dB.Fullscreen
Use "Fullscreen" in the top bar or press F to go fullscreen and focus on the spectrum once the parameters are set. The info bar at the top of fullscreen shows the note name, the deviation in cents, the fundamental and the overall level, and lets you pause or reset the hold without leaving fullscreen. The "Landscape" button tries to lock the screen orientation (supported in Chrome on Android; on iOS you must rotate the device manually). Browsers without native fullscreen fall back to a pseudo-fullscreen that fills the viewport, with identical features.Other interactions
Hovering with the mouse or tapping the chart with a finger reads the frequency and level at that point; clicking a row in the peak table highlights that peak on the chart.How to use noise reduction
Keep the room quiet and click "Capture Noise Floor" to sample about 1.5 s of background noise, then tick "Spectral-subtraction denoise". The app applies subtractive spectral subtraction in the power domain (P′ = max(P − α·Pn, β·P)), where α is the denoise strength. If "musical noise" appears or the signal is weakened, lower the strength. The "Noise gate" instead pushes every bin below the threshold down to the noise floor, which is effective against broadband hiss.Levels and weighting
The vertical axis is dBFS relative to full scale, reported as dBA / dBC after A (or C) weighting. Absolute sound pressure level requires the calibration offset — see the "Axis / Display" group.Tuning and the A4 reference
In the "Fundamental F0 / Tuning" card you can set A4 to any value between 380 and 520 Hz (presets 432 / 435 / 440 / 442 / 444). The change applies at once to the note name on the card, the needle bar, the fundamental marker on the chart and the note column of the peak table. The needle bar has a full scale of ±50 cents; the lighter middle band is the ±5-cent "in-tune zone": |deviation| < 5 ¢ shows green, < 20 ¢ yellow, and anything larger red. On the chart the fundamental is marked with an orange highlight band and a glowing vertical line, its crossing with the envelope is drawn as a diamond, and harmonics are dashed and labelled ×2 … ×10.Fundamental detection
The time-domain signal is decimated to ≈8 kHz with an anti-aliasing filter, then the normalised square difference function (NSDF / McLeod pitch method) is computed; the first key maximum above the threshold is taken and refined by parabolic interpolation, with a median filter suppressing octave jumps. The detection range is roughly 45 Hz – 3 kHz.Privacy
This is a single-file, front-end-only application with no network requests at all; the audio data exists only in the memory of the current page. The microphone is accessible only when the page is opened overhttps:// or localhost.
