## Real Time Pitch Tracking

## Notes

### Yin

I’m a long-time Yin user, but the algorithm seems to have some serious limitations for realtime use in an embedded enviroment:

- The algorithm is block-based and inherently latent
- The fast version of the algorithm requires an FFT on every block
- In my experiments the algorthm slows to a crawl with a large
`tau_max`

, so detecting pitches lower than ~70-80hz seems to have a pretty big impact on performance.

### Extended Complex Kalman Filter

Das Orchisama, Chris Chafe and JOS to the rescue maybe?

- This algorithm is designed for low-latency real time use, and computes a pitch estimate on every
*sample*instead of every frame like Yin. - It still requires an FFT on every block, although there is a note about some mitigations in the paper…
- Seems to perform much better than Yin: much more stable and tracks fast moment more easily

### Bell Labs Hardware Implementation

1976 IEEE paper: J Dubnowski, R Schafer, L Rabiner. Real-time digital hardware pitch detector

Is this something? They call this “high-quality” but that’s in 1976. Maybe it’s just a basic autocorrelation approach? (EG what Yin attempts to improve on…)

I’ll have to track down access, I’m curious…

### MPM / Tartini

200? paper: Philip McLeod & Geoff Wyvill. A Smarter Way To Find Pitch

- The “clarity” param is interesting.
- Also requires an FFT.
- Is optimized to use small block sizes though, so latency should be lower… but then you’re doing that many more FFTs a second…