If you've ever tried building a web-based instrument tuner using the Web Audio API, you probably started where most of us do: feeding microphone data into an AnalyserNode, running a Fast Fourier Transform (FFT), and looking for the highest frequency peak.
It’s a classic, straightforward approach. And for synthesized tones or simple plucked strings, it works reasonably well.
But recently, I built a browser-based tuner specifically for the Erhu (a traditional two-stringed Chinese bowed instrument), and I quickly realized that standard FFT-based pitch detection completely falls apart when faced with a bow.
Here is why bowing breaks standard tuners, and how switching to time-domain Autocorrelation algorithms solved the problem.
The Problem: Bowing Transients and Noise







