About

Method, measured accuracy and sources

Sing is a vocal pitch trainer that runs in the browser. This page says how it finds a pitch, how accurate that measured, what it does with the sound from your microphone, and where its facts come from.

What Sing is

Sing is a vocal pitch monitor with a target-note mode, a vocal range test, exercises for singing scales and singing intervals against a reference, and pitch matching by ear. Any song in the labs.llc song book (five lists, 5,018 tracks) can be sent to it with Sing this. It is free, has no accounts, and is part of labs.llc, in the Sound room beside the chromatic tuner, which reads instruments. It was sing.com.im until 2026; every address there now answers one permanent redirect to its page here.

It reports pitch. It is not vocal coaching and not medical advice, and it makes no claim about what singing with it will do for a voice.

How the pitch is found

Up to 30 times a second the page takes the most recent block of sound from the microphone, 4,096 samples or about 85 to 93 thousandths of a second, and looks for the period at which the block repeats. The method is the normalised square difference function described in McLeod and Wyvill, “A Smarter Way to Find Pitch”: the block is compared with a shifted copy of itself at every shift in the search range, and the result is scaled so that a perfectly repeating sound scores 1. That score is the clarity figure the page prints.

The shift chosen is the first peak that reaches 85% of the tallest one, not the tallest, because the tallest is often at twice the true period and would name the octave below. The peak is then re-measured on a shorter, more recent slice of the block, so that a moving pitch is measured where it is now, and refined between samples with a parabola. A block quieter than −48 dBFS, or with a clarity under 0.55, is given no pitch.

Frames then pass through a tracker. A note has to begin with a clarity of at least 0.8 and may continue down to 0.55. The first frame of a note is held until a second agrees with it. A frame more than 350 cents from the ones before it is not believed until three frames in a row agree. The trace draws every frame that passes. The note name, the cents figure and the timers use the centre of the last nine frames: the midpoint, in cents, between the lowest and the highest of them.

The detector is the trainer’s own: it began as the tuner’s and was changed for a voice (a narrower range, two passes, a tracker that allows vibrato), so the two are separate files measured separately.

Your microphone and your privacy

The microphone opens only when you press Start microphone, and closes when you press it again, leave the page or put the tab in the background. The browser’s echo cancellation, noise suppression and automatic gain are asked to stay off, because all three reshape a held note.

The sound is handed to an analyser inside the page and to nothing else. It is not played back, not recorded, not stored and not sent: the trainer’s scripts make no network request of any kind with it, and each block of sound is overwritten by the next. What is kept is in this browser’s own storage: the A4 reference (labs.sing.a4), the choice of note names (labs.sing.solfege) and the lowest and highest notes from the range test (labs.sing.range). The paper or dark edition you chose is kept under labs_edition, in local storage and in a cookie. Clearing the site’s data in your browser removes them all. Settings saved on sing.com.im before the trainer moved here stay in that site’s storage: a browser keeps each site’s storage apart.

When a song is named on the trainer, the page loads that list from the labs.llc song book, a file on labs.llc. The links marked Find on YouTube and Find on Spotify are ordinary links: nothing is asked of those sites unless you press one, and then it opens in a new tab.

Analytics. labs.llc counts visits with Google Analytics, the one script on the page that talks to anyone else, and only from labs.llc itself. It is told which page was opened and in which edition, and, as on every labs.llc tool, that one of the page’s controls was first used, that the page was in use for thirty seconds, and how quickly the page drew and answered (its LCP, CLS and INP timings, with the tag and the id or class of the element involved, never its text). The trainer’s own scripts tell it nothing: no sound, no note and no reading is part of any of it. The menus, the search and the Lab Assistant around the trainer are labs.llc’s own; the site’s legal page has the privacy note for all of labs.llc.

Settings

A4 can be set from 415 to 466 Hz and is 440 Hz by default, the standard tuning pitch (Wikipedia, A440 (pitch standard)). Notes are named with a letter and an octave number, with middle C as C4 (Wikipedia, Scientific pitch notation), and sharps are always written as sharps: the page hears a pitch, not a key, and cannot know whether a note is an F sharp or a G flat. Solfège names are fixed do, in which Do is always C (Wikipedia, Solfège). Cents are hundredths of an equal-tempered semitone (Wikipedia, Cent (music)).

Measured accuracy

The detector file labs.llc serves (sing/assets/js/sg-pitch.js) was run, unchanged, on 7,344 synthesised tones: 12 kinds of tone, at every note from C2 to D6 (51 notes, each detuned by a random amount), at 2 sample rates (44,100 and 48,000 Hz). The error is the difference, in cents, between the pitch the detector gave and the true pitch of the tone over the samples it measured. A frame counts as the wrong note when it is more than 50 cents out.

These are synthesised tones. The “vowel-like” ones are harmonic series shaped by three resonances chosen for the test so that the fundamental is weak; they are not recordings of singers. The vibrato figures sit inside what Wikipedia, Vibrato gives for solo singers, an extent usually under a semitone either side of the note.

One frame at a time

Frame test: the detector on single windows of synthesised tone
Test toneFramesAnsweredWrong noteMedian error, cents95th percentileLargest
Pure sine612100.0%0.00%0.000.010.03
Sine plus five harmonics612100.0%0.00%0.000.060.12
Vowel-like, open shape612100.0%0.00%0.010.030.08
Vowel-like, front shape612100.0%0.00%0.010.070.11
Vowel-like, back shape612100.0%0.00%0.000.040.09
Harmonics with vibrato 5.5 Hz, ±50 cents612100.0%0.00%0.693.355.16
Vowel-like with vibrato 6.5 Hz, ±100 cents61286.1%2.09%3.4928.6449.11
Vowel-like in noise, 20 dB612100.0%0.00%0.080.400.99
Vowel-like in noise, 10 dB612100.0%0.00%0.804.1313.14
Vowel-like in noise, 5 dB61299.2%0.00%2.2211.8428.45
Vowel-like, vibrato 5.5 Hz ±50 cents, noise 10 dB61299.3%0.00%2.117.6713.36
Harmonics 2 to 6 only (no fundamental)612100.0%0.00%0.000.140.29

By register

Frame test by register: 95th percentile error in cents, and share of frames answered
Test toneC2–B2, 95th pctC2–B2, answeredC3–B3, 95th pctC3–B3, answeredC4–B4, 95th pctC4–B4, answeredC5–D6, 95th pctC5–D6, answered
Pure sine0.00100.0%0.00100.0%0.00100.0%0.02100.0%
Sine plus five harmonics0.00100.0%0.00100.0%0.01100.0%0.09100.0%
Vowel-like, open shape0.00100.0%0.01100.0%0.02100.0%0.06100.0%
Vowel-like, front shape0.01100.0%0.01100.0%0.04100.0%0.09100.0%
Vowel-like, back shape0.00100.0%0.01100.0%0.02100.0%0.06100.0%
Harmonics with vibrato 5.5 Hz, ±50 cents4.67100.0%1.86100.0%1.05100.0%0.86100.0%
Vowel-like with vibrato 6.5 Hz, ±100 cents46.5357.6%11.8686.1%6.55100.0%4.1797.8%
Vowel-like in noise, 20 dB0.14100.0%0.24100.0%0.36100.0%0.60100.0%
Vowel-like in noise, 10 dB1.17100.0%2.42100.0%3.14100.0%6.67100.0%
Vowel-like in noise, 5 dB2.8597.2%5.94100.0%8.71100.0%16.4699.4%
Vowel-like, vibrato 5.5 Hz ±50 cents, noise 10 dB9.9197.9%3.60100.0%3.65100.0%6.1299.4%
Harmonics 2 to 6 only (no fundamental)0.00100.0%0.00100.0%0.03100.0%0.18100.0%

Through the tracker, as the page uses it

Three seconds of each tone, 30 frames a second. “Readout” is the note centre the page prints, compared with the centre of the tone. “Trace” is each frame, compared with the pitch at that moment. “Shown” is the share of frames that produced a reading.

Tracking test: three seconds of tone, thirty frames a second, through the tracker
Test toneFramesShownReadout median, centsReadout 95th pctReadout largestTrace 95th pctFirst reading after
Sine plus five harmonics8,97698.9%0.000.060.110.0667 ms
Vowel-like, open shape8,97698.9%0.010.030.040.0367 ms
Harmonics with vibrato 5.5 Hz, ±50 cents8,97698.6%2.345.3113.773.6867 ms
Vowel-like with vibrato 6.5 Hz, ±100 cents8,97673.8%4.1113.7236.7310.2667 ms
Vowel-like in noise, 10 dB8,97698.9%0.361.977.603.9667 ms
Vowel-like, vibrato 5.5 Hz ±50 cents, noise 10 dB8,97697.6%2.155.7814.027.6867 ms

What it refuses

800 windows each of near-silence, of loud noise with no pitch, of a steady offset, of 60 Hz hum and of a tone above the range (1,250 to 4,000 Hz) were given to the detector. It named a pitch in none of them.

In the browser, through the microphone path

A fake microphone in a headless browser is silent, so the page was given a substitute: a getUserMedia that hands back a stream carrying a generated tone (a fundamental and five harmonics). Everything after that is the page’s own code on labs.llc: the same microphone routine, the same analyser window, the same detector, the same readout. 26 notes were sent in headless Chrome 154 at 48,000 Hz; 26 were read back as the right note, and the largest error in the frequency shown was 0.21 cents.

Browser test: tone sent, frequency the page showed
Note sentHz sentHz shownError, centsNote shown
C265.4165.410.10C2
G298.0098.000.02G2
C3130.81130.81-0.04C3
E3164.81164.81-0.04E3
G3196.00196.000.02G3
A3220.00220.000.00A3
C4261.63261.60-0.17C4
D4293.66293.700.21D4
E4329.63329.60-0.14E4
F4349.23349.20-0.14F4
G4392.00392.000.02G4
A4440.00440.000.00A4
B4493.88493.900.06B4
C5523.25523.20-0.17C5
D5587.33587.30-0.09D5
E5659.26659.20-0.14E5
F5698.46698.40-0.14F5
G5783.99784.000.02G5
A5880.00880.000.00A5
B5987.77987.70-0.12B5
C61046.501046.50-0.00C6
D61174.661174.60-0.09D6
F♯292.5092.500.03F♯2
A♯3233.08233.100.13A♯3
C♯5554.37554.400.11C♯5
D♯4311.13311.10-0.15D♯4

Measured 2026-09-29 07:15 (UTC) on this page. The page prints hertz to one or two decimal places, so part of each error is rounding.

What these numbers do not cover

  • No real microphone, room or voice was measured. A laptop microphone, a noisy room or a breathy voice will do worse than a synthesised tone.
  • The widest vibrato tested, ±100 cents at 6.5 Hz, is where the detector is weakest, and weakest of all in the lowest octave: there a block of sound spans most of one swing, so the sound does not repeat and many frames are refused.
  • One voice at a time. Two notes together are not one pitch.
  • Notes below C2 and above D6 are reported as out of range.
  • Not tested on Safari, iOS or Firefox, and the permission-refused paths were not driven by a real browser prompt.

Measured 2026-09-29 06:38 (UTC) by sing/tools/accuracy.js on the served file. Detector settings: first-peak threshold 0.85, clarity floor 0.55.

Sources

Every rule and figure on these pages that was not computed by the trainer was read at one of these 13 sources on the date shown. The voice-type ranges are conventions and the two articles that give them do not agree; both are shown on the range page.

  • Voice type — Wikipedia. Used for the typical range of each voice type. Revision 1371431200 of 2026-08-26. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Voice_type
  • Vocal range — Wikipedia. Used for the second set of approximate ranges, and the statement that range alone does not determine a voice type. Revision 1365646625 of 2026-07-23. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Vocal_range
  • Cent (music) — Wikipedia. Used for the cent: 100 to an equal-tempered semitone, 1200 · log2(f2 / f1). Revision 1376384857 of 2026-09-23. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Cent_(music)
  • Scientific pitch notation — Wikipedia. Used for note names with an octave number: middle C is C4, and the number goes up at each C. Revision 1355585069 of 2026-05-22. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Scientific_pitch_notation
  • A440 (pitch standard) — Wikipedia. Used for A4 = 440 Hz as the tuning standard, ISO 16. Revision 1368304281 of 2026-08-08. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/A440_(pitch_standard)
  • Interval (music) — Wikipedia. Used for the names of the intervals of 1 to 12 semitones. Revision 1369352691 of 2026-08-14. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Interval_(music)
  • Major scale — Wikipedia. Used for the major scale’s pattern of whole and half steps. Revision 1372680474 of 2026-09-01. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Major_scale
  • Minor scale — Wikipedia. Used for the natural and harmonic minor scales. Revision 1369856436 of 2026-08-17. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Minor_scale
  • Pentatonic scale — Wikipedia. Used for the major and minor pentatonic scales. Revision 1369340041 of 2026-08-14. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Pentatonic_scale
  • Chromatic scale — Wikipedia. Used for the chromatic scale. Revision 1362634296 of 2026-07-05. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Chromatic_scale
  • Solfège — Wikipedia. Used for fixed-do solfège: Do, Re, Mi, Fa, Sol, La, Si tied to C, D, E, F, G, A, B. Revision 1370429203 of 2026-08-21. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Solf%C3%A8ge
  • Vibrato — Wikipedia. Used for the extent of a solo singer’s vibrato: usually less than a semitone either side of the note. Revision 1344845204 of 2026-03-22. Read 2026-09-28 (UTC). https://en.wikipedia.org/wiki/Vibrato
  • A Smarter Way to Find Pitch — Philip McLeod and Geoff Wyvill, University of Otago. Used for the pitch method: the normalised square difference function, picking the first key maximum above a threshold, and the clarity measure. Read 2026-09-28 (UTC). https://www.cs.otago.ac.nz/graphics/Geoff/tartini/papers/A_Smarter_Way_to_Find_Pitch.pdf

The song book

The songs the trainer can name are the labs.llc song book’s own five lists, 5,018 tracks, with the artist, the title and a year for every one; the song book’s pages say where the lists came from. sing.com.im had its own shorter lists (1,715 songs); 1,714 of them are in the song book, and a “Sing this” link made there opens the same song here. The one that is not was a video title rather than a song.

Contact

Corrections and questions: labs@labs.llc.