The first thing anyone reaches for when building a pitch detector in the browser is AnalyserNode.getFloatFrequencyData() — the FFT magnitude spectrum. It works, and then it fails the instant you plug in a guitar and play the low E. Here's why, and what to do about it.
Sub-cent-accurate tuning from ~80 lines of autocorrelation. No dependencies. Plain JS. 🎙 Demo: https://sen.ltd/portfolio/pitch-
