Skip to content

Accuracy Lab

Every release of HeyTuner runs the same accuracy tests before it can go live, and this page is rebuilt from that run's results.

Test run
Release
v1.0.0, commit c0a2e5dd67
Synthetic cases
19,248

What we promise

A reading within 0.1 cent on clean test tones and within 0.5 cent (95th percentile) on plucked strings, and no reading rather than a wrong note. A cent is one hundredth of a semitone; most listeners cannot hear a difference below about 3 to 5 cents.

Layer 1: synthetic signals

Every target note of every tuning on the site, at offsets of 0, ±1, ±5, ±25 and ±49 cents, with A4 at 415, 440 and 466 Hz, at both 44.1 and 48 kHz. The signals are pure sines, band-limited sawtooth waves, and plucked-string models with string stiffness (inharmonicity B from 0 to 0.001), with and without the fundamental, and mixed with white and pink noise at 40, 20 and 10 dB signal-to-noise ratio. Errors are measured against the exact frequency used to make each file.

Error in cents of full-precision readings
SignalCasesMedianp95MaxWrong noteRequiredResult
Sine tones8,964< 0.001< 0.0010.0120.00%max ≤ 0.1¢, note 100%Pass
Sawtooth tones8,964< 0.001< 0.0010.0200.00%max ≤ 0.1¢, note 100%Pass
Plucked strings, inharmonicity B 0–0.001480< 0.001< 0.0010.0090.00%median ≤ 0.1¢, p95 ≤ 0.5¢Pass
Plucks with the fundamental removed120< 0.001< 0.001< 0.0010.00%p95 ≤ 1.0¢, note 100%Pass
White noise, 40 dB SNR1200.0020.0130.0750.00%median ≤ 0.1¢, p95 ≤ 0.5¢Pass
Pink noise, 40 dB SNR1200.0090.0800.2690.00%median ≤ 0.1¢, p95 ≤ 0.5¢Pass
White noise, 20 dB SNR1200.0230.1240.7560.00%p95 ≤ 1.0¢, note 100%Pass
Pink noise, 20 dB SNR1200.0920.8895.6910.00%p95 ≤ 1.0¢, note 100%Pass
White noise, 10 dB SNR1200.0740.4862.9840.00%wrong note ≤ 0.5%Pass
Pink noise, 10 dB SNR1200.2763.59815.3950.12%wrong note ≤ 0.5%Pass

Provisional readings. To show a reading quickly, the needle starts moving once the analysis window is 60% filled with the new note. Those first readings, at most a few hundred milliseconds per pluck, are slightly less precise; the in-tune state only counts full-precision readings. For transparency, their errors are:

Error in cents of provisional readings
SignalReadingsMedianp95Max
Sine tones24,354< 0.0010.0180.544
Sawtooth tones24,354< 0.0010.0180.517
Plucked strings, inharmonicity B 0–0.0011,6140.0250.5934.260
Plucks with the fundamental removed3650.0120.6080.920
White noise, 40 dB SNR4040.0240.4711.432
Pink noise, 40 dB SNR4040.0430.4832.000
White noise, 20 dB SNR4040.0890.4681.529
Pink noise, 20 dB SNR3960.2331.3672.455
White noise, 10 dB SNR3900.1780.8312.801
Pink noise, 10 dB SNR4480.6703.0746.629

Lock time

Time from the pluck to the first reading within 1 cent of the true pitch, on plucked strings with room noise.

Lock time
InstrumentCasesMedianp95Limit
Guitar40177 ms177 ms200 ms
4-string bass20283 ms347 ms350 ms
Low B (5-string bass)2283 ms347 ms500 ms

Reference tones

In By Ear mode each instrument plays its own sound, modelled on measurements of real acoustic, electric, bass and ukulele strings. The pitch is set mathematically, so every reference note is checked on the tuner itself, for every string of every tuning, at A4 = 415, 440 and 466 Hz.

Reference tone accuracy
InstrumentNotes checkedLargest errorRequired
Acoustic guitar3600.000¢≤ 0.1¢
Electric guitar3600.000¢≤ 0.1¢
Bass900.001¢≤ 0.1¢
Ukulele480.000¢≤ 0.1¢

The other test layers

  • Recorded strings. A corpus of real recordings of acoustic, electric, bass and ukulele strings on several phones and an audio interface, in quiet and noisy rooms, with the true pitch logged from a hardware strobe tuner. Its results will be published here as soon as the corpus is recorded.
  • Browsers. The test files are fed into Chromium, Firefox and WebKit as if they were a microphone, and the note, cents, string detection, in-tune state and checklist on screen are checked automatically.
  • Real devices. Before each release a person tunes a real guitar and bass on iPhone, Android, Windows and macOS browsers, side by side with a strobe tuner.
  • Performance. A 10-minute session on a low-cost Android phone must not drop audio or grow memory.

Download the test files

These are the same files our browser tests use. Play them into any tuner and compare. The true frequency is in each file name.

How the engine works

For the full explanation, read how the tuner works.