Benchmark · pitch detector
Pitch detector benchmark
How often the pitch detector names the wrong octave, how many cents it is off and how fast its reading settles: 65 generated tones in four device profiles, 93 hummed notes with a known note, 56 notes from the app's own takes.
Measured on 28 October 2026, with the reader the pitch detector runs.
The numbers
Generated tones, B0 to C7
| Tone | Right | Octave errors | Cents off (median / worst) |
|---|---|---|---|
| Sine | 15 of 15 | 0 | 0.1 / 10.3 |
| Saw | 15 of 15 | 0 | 0.1 / 12.9 |
| 808 | 5 of 5 | 0 | 0.1 / 0.1 |
| 808 through a phone speaker | 5 of 5 | 0 | 0 / 0 |
| Sung vowel | 10 of 10 | 0 | 2.6 / 6.3 |
| Overtone ten times louder than the note | 15 of 15 | 0 | 4.6 / 15.8 |
| All | 65 of 65 | 0 | 0.7 / 15.8 |
| The reader alone, no octave check | 42 of 65 | 16 | 0.9 / 42.3 |
The reader alone missed 7 tones entirely. Settling time, from the start of the tone to the stretch that holds within 25 cents: median 20 ms, 90% within 120 ms. The 808s settle last (120 ms), because their pitch drops first; the sung vowel with vibrato takes 70 ms.
Per device profile (simulated)
| Profile | Right | Octave errors | Settling (median / 90%) |
|---|---|---|---|
| Line in | 65 of 65 | 0 | 20 / 120 ms |
| Laptop in a room | 65 of 65 | 0 | 20 / 140 ms |
| Phone microphone | 63 of 65 (1 not heard) | 1 | 20 / 120 ms |
| Headset microphone | 59 of 65 (6 not heard) | 0 | 20 / 120 ms |
Real recordings
| Recordings | Notes | Octave errors | Settling (median / 90%) |
|---|---|---|---|
| Sing-back hums, 12 takes, written notes | 93 | 0 | 100 / 270 ms |
| The app's takes, 8, no written notes | 58 | – | 50 / 310 ms |
Of the 93 sing-back notes, 73 were read as the written note, 13 as another note and 7 were too short to read; the octave check changed none of them. Of the app's 58 notes, 56 got a steady reading.
How it was measured
- Each generated tone lasts 1.5 seconds with a little noise under it, one every five semitones from B0 (30.9 Hz) to C7 (2,093 Hz); the 808s from B0 to B2, the sung vowel from D2 to C6. The noise is seeded, so every run gives the same numbers.
- The reader is the pitch detector's own code, built as the site serves it and run in headless Chromium.
- Right means within half a semitone of the tone; an octave error is a whole number of octaves off. Cents are counted on the right readings.
- Settling time runs from the start of the sound (on a hum, its first pitched moment) to the start of the stretch that holds within 25 cents. The reader looks every 10 ms.
- The device profiles are filters on the same tones. Line in: the tone as made. Laptop: a short room reverb, noise, the top rolled off at 8 kHz. Phone: nothing below about 150 Hz, a soft limiter, noise. Headset: 300 Hz to 3.4 kHz and more noise.
- Sing-back hums: takes where a melody was played and hummed back, each note against its written note, in the octave the rest of its take was hummed in. A hummed note counts as right within a semitone.
- The app's takes: the notes the app heard in its own saved takes. There is no written melody, so they count for settling only.
Where the numbers stop
- Every real recording comes from one laptop microphone (Chrome, echo cancellation on, 48 kHz) and two voices. No real phone or headset was measured: those rows are simulations.
- The tones are single clean notes. A chord, a full mix or two notes at once is not measured, and the detector is not made for them.
- Nothing below B0 (30.9 Hz) was measured; the reader's deep pass stops there.
- When a hum is read as another note, the take can't tell whether the voice slid or the reader missed.
- Your phone, its processing and your room are not in these tables.
