Report sheet LN-06 · filed 27 Sept 2026
Tuner: pitch detection that shows its working
A browser tuner built on autocorrelation: within hundredths of a cent on synthetic notes, and no sound leaves the tab.
- Instrument
- labs.llc/tuner/
- Shelf on labs.llc
- Studio & Tools · Sound
- Bench
- Local copy of the build-537 files
- Run
- 27 Sept 2026 · 20:05–20:07 UTC
- Controls
- GuitarTuna · Peterson iStroboSoft
- Evidence
- Source lines in the build; timed reads
Aim
Tuner is a chromatic tuner that listens through the microphone and shows the note, the octave, the frequency and the deviation in cents on a drawn needle. It carries string targets for ten tunings — guitar standard, drop D, DADGAD and open G, four- and five-string bass, soprano ukulele, violin, mandolin and cello — plus a chromatic mode, a reference tone for tuning by ear, and A4 adjustable from 415 to 466 Hz.
It is for guitarists, bassists, string and early-music players who want a tuner in a tab with nothing to install. We set out to test the detector itself.
Method
Apparatus: what it reads, and where the work happens
Everything happens in the browser; no tuner script makes a network request. mic.js opens the microphone into an 8,192-sample analyser, builds the audio context inside the click so iOS does not leave it suspended, and closes every track on stop, so the recording light goes out (1–30, 203–212).
pitch.js uses McLeod’s normalised square difference function rather than the loudest FFT bin, and its comments say why: at low E a semitone is 4.9 Hz while a bin is 21.5 Hz, and a plucked low string’s fundamental is often its quietest partial. It takes the first clear peak, not the tallest — the defence against octave errors — and refines the winning lag between samples, since one sample is 12.9 cents at high E (1–63). The needle takes the median of five readings, so it only ever shows a measured value (305–318). On noise it returns a reason — quiet, short or unclear — rather than a guess.
It reads
- The visitor’s microphone only, through the Web Audio API; nothing fetched, no audio sent
Procedure
On 27 September 2026 (20:05–20:06 UTC) we searched the tuner scripts for network calls, fetched the page, and loaded the page’s own pitch.js into JavaScriptCore, calling its detector with the page’s settings (loudness gate 0.005, clarity 0.6) on 8,192-sample windows of synthetic notes at 48 kHz.
Result
Fig. 11280 × 800
Fig. 2390 × 844
Table 1 · Run log, 27 September 2026
| No. | Reading | UTC | What came back |
|---|---|---|---|
| 1 | Network calls in the tuner scripts | none; the only addresses are help text pointing to labs.llc/tuner/ | |
| 2 | Page | HTTP 200, 63,947 bytes | |
| 3 | Low E, fundamental a tenth of the 2nd harmonic | 82.407 Hz, E2, −0.003 cents — no octave error | |
| 4 | Low E, 7 cents sharp | +7.02 cents | |
| 5 | Five-string bass low B, 30.868 Hz | B0, 0.006 cents off | |
| 6 | A4 · high E with noise · violin E5 | exact · +0.037 cents · −0.028 cents | |
| 7 | Noise alone | no answer; reason ‘unclear’ |
The detector read every synthetic note within four hundredths of a cent, found the right octave on a low E built to mislead it, and declined to name pure noise. This measures the arithmetic, not a room: no real instrument went through a real microphone in this run.
Discussion
Two controls: the same job done elsewhere on the web. Each was read on its own page on the date shown, and each is better than Tuner at something.
GuitarTuna online tuner (Yousician)
Checked .
A browser tuner (‘Tap to tune’) with reference tones for tuning by ear; its page states 111 tunings across 15 instruments, including six-, seven- and twelve-string guitar, bass, ukulele, violin, mandolin and banjo. Its iOS and Android apps add more than 400,000 songs with chords, a metronome, a chord finder, chord games and courses.
Where it is better
- Eleven times the tunings, across more instruments.
- A practice kit around the tuner.
- Native apps.
Where Tuner goes further
- Publishes its method in the page source — the algorithm, why an FFT peak fails on a low string, how precision is reached — and held to 0.04 cents on synthetic notes in our run.
- Historical calibration from 415 Hz explained note by note (app.js 632–650), and audio that never leaves the tab.
Peterson iStroboSoft
Checked .
An iOS strobe tuner for iPhone and iPad with a stated accuracy of 0.1 cent, concert A from 340 to 540 Hz, 76 ‘sweetened’ presets by in-app purchase, and add-ons including a spectrogram, oscilloscope, spectrum analyser and harmonic tuning mode.
Where it is better
- A true strobe display and a published accuracy specification.
- Sweetened presets and a wider calibration range.
- Scopes and spectrum tools for technicians.
Where Tuner goes further
- Runs in any modern browser on desktop and Android as well as iPhone, with nothing to install or buy.
- Its detection code is readable in the page, with the reasoning beside each step.
Sources of error: where it falls short
- Ten tunings against GuitarTuna’s 111: no banjo, seven- or twelve-string guitar, half-step-down or custom tuning.
- Only a tuner: no chords, metronome, songs or lessons.
- Our run measured the arithmetic, not a microphone in a room, and the page needs a browser that grants microphone access.
- No strobe and no sweetened or non-equal temperaments; A4 spans 415–466 Hz against Peterson’s stated 340–540.
Conclusion
FindingWithin 0.04 cents on synthetic notes, no octave error, and noise refused as ‘unclear’.
Tuner does the hard part properly and lets you read how: autocorrelation over the loudest bin, the first peak over the tallest, interpolation between samples, and a needle that only ever shows a measured value. On synthetic notes it was accurate to hundredths of a cent. For a practice suite, GuitarTuna; for a strobe and sweetened tunings, Peterson. For an honest tuner in a tab that never uploads a sound, this one.