A faster first pitch reading

A pitch corrector can't correct a note before it knows which note it is. That first reading sets a floor under how quickly correction can start, in every mode. So we asked one question: how fast can Tune get a usable pitch reading after a note starts, without losing reliability?

The short answer

  • Our detector now gives a first usable reading 15.5 ms (median) after a note starts, on 537 real note onsets. It needed 28.6 ms before.
  • The open-source detectors we tested from the aubio library need 18.6–34.4 ms, with lower steady accuracy.
  • Neural trackers make far fewer octave errors, but their long analysis windows make them about 30–35 ms late when run in real time.

How a detector was scored

Each detector ran causally, as it must inside a plug-in: it only sees past samples. Input was low-passed and decimated to 16 kHz, with one reading every 2.67 ms.

scoremeaning
first-goodtime from the voice onset to the first reading within 50 cents that stays at least 80 % good for 20 ms
wrong-beforeconfidently wrong readings before that point: these would drive a wrong correction
steadyshare of good readings from 120 ms after the onset
octave errorsoctave or fifth errors over the whole set

The material

  1. A synthetic onset corpus (193 s, 240 notes) with exactly known pitch: glottal pulses with jitter and shimmer through four vocal-tract resonances, 80–800 Hz, attacks of 4–45 ms, with breathy lead-ins, scoops, vibrato and breaths mixed in.
  2. A real-world set: 40 stems from MDB-stem-synth, a research dataset of real multitrack stems resynthesised so their pitch is known exactly. 34 minutes, 537 note onsets, voices and instruments in the vocal range. (The dataset is licensed for research use only; it is used here for measurement, not in the product.)

What made the old detector slow

Tune uses YIN, a well-known autocorrelation-style pitch method. The plug-in compared the oldest part of its analysis window with later samples, so a new note needed the whole window, about 25 ms, filled with voice before it could be read. Comparing the newest part of the window with earlier samples needs only the window plus one period of the voice. Same method, same reliability, a faster answer: on the synthetic corpus the median first reading fell from 24.7 ms to 16.2 ms, and for high voices from 22.4 ms to 10.5 ms.

detector (synthetic corpus)first-good, median (90th percentile)low / high voicessteadyfalse alarms in breaths
YIN, oldest part compared (old)24.7 (30.1) ms27.6 / 22.4 ms99.2 %0.6 %
YIN, newest part compared (adopted)16.2 (23.0) ms19.6 / 10.5 ms99.0 %0.0 %
YIN newest, floor 160 Hz (the "Alto" range)9.1 (15.1) ms14.9 / 7.7 ms55.0 %*0.0 %
growing window, YIN19.7 (33.8) ms24.9 / 13.5 ms93.1 %0.0 %
growing window, McLeod19.7 (51.3) ms26.1 / 13.4 ms91.4 %0.0 %
per-period window18.2 (53.6) ms25.0 / 10.4 ms85.9 %0.0 %

\* Notes below the range floor count as misses; that is the point of a range setting.

Real recordings

detector (MDB-stem-synth, 537 onsets)how it runsfirst-good, median (90th percentile)steady
Tune's detector, newest part comparedcausal, 2.7 ms hops15.5 (77.7) ms85.7 %
Tune's detector, old layoutcausal28.6 (130.8) ms77.9 %
aubio yincausal34.4 (141.1) ms71.4 %
aubio yinfftcausal19.2 (115.9) ms60.8 %
aubio mcombcausal18.6 (112.4) ms70.8 %
CREPE tiny (neural)offline, centred 64 ms windowsees the future: about 34 ms late if run causally86.1 %
PESTO (neural)offline, centredsees the future74.7 %

What we learned

  1. The 25 ms wait was a window layout, not physics. Reading the newest samples first made every reading about 13 ms more current, with the same reliability.
  2. Shorter or adaptive windows mostly trade speed for errors. Per-period windows reach 9–10 ms for high voices but multiply octave errors three to six times and wrong early readings six to twenty times.
  3. The voice range setting is the honest speed lever. Tell Tune the singer is an alto and a high voice gets a first reading in under 8 ms. That is why Tune's Expert panel has a Range control.
  4. Neural trackers win on octave decisions, not speed. CREPE tiny made about seven times fewer octave errors than any classic detector, but its 64 ms window makes it late in real time. A tiny network that only judges octave and voicing, next to YIN, is our next experiment.

Why it matters for singers

You can't correct a note faster than you can recognise it, and you can't recognise a pitch faster than one or two cycles of the voice. At 110 Hz one cycle is 9 ms. That is why no real-time tuner snaps instantly, and why Tune's hard setting needs 15 ms (Studio) or 28 ms (Live) to settle. More in latency explained and how we rebuilt Tune.


aubio, CREPE and PESTO are open-source projects named only to identify what we measured. MDB-stem-synth is a research dataset (CC BY-NC 4.0). Measurements made 7 November 2026 on the development Mac; the detector's cost is about 0.4 % of one core.