My goal is to measure the pitch of my violin with a small computer/microcontroller very accurately (a Raspberry Pi would be too big). I'm aiming for an accuracy of 0.1 Hz; 0.5 Hz could also work. The problem is that a violin produces a lot of frequencies known as harmonics. I only need the main frequency of each string, for example, 440 Hz.
I did a lot of research on the internet and performed some tests, but my measurements fluctuate by several Hz. I tried FFT and Autocorrelation in C++ on an older ESP32 with a "only" 20 kHz sampling rate.
My question is: What algorithm would work best in my case? Is an FFT capable of measuring as accurately as I need with such limited hardware power? What hardware is the best? Would a Raspberry Pico with MicroPython be a better option?
Thanks for your help!
0.1Hzaccuracy requires 5K$+ lab equipment, not a cheap MCU. Also what do you mean byI only need the main frequency of each string, for example, 440 Hz? do you just want to measure the amplitude of purely 440Hz?