I'm a newbie learning FFT, I'm writing fft using swift vDSP to process audio from the microphone.
My goal is to fine-tune the calculation to 0.1 Hz on the audio whose frequency changes every 0.1 seconds.
For example, there will be a very strong audio frequency of 582.0 Hz at 0.1 seconds, and it will change to 582.1 Hz at 0.2 seconds. I have to output every 0.1 seconds, the strongest Hz within the range of concern. Or at least 0.3 Hz.
When I set the sampling frequency to 44100 Hz, fft sample count to 131072, and hop size to 512, I found that I would get the wrong results. For example, the output seemed to be blurred. The high decibel of 582 Hz lasted for a long time, and 582.1 also lasted will last long.
But when the sample count is reduced to 8192, the output will be relatively correct, but the frequency is not fine enough to 0.1Hz.
I would like to ask if there is a way to increase the resolution of time and increase the resolution of frequency at the same time. Or are my needs not suitable for FFT as a tool? There are other algorithms?
I got stuck on this part for days and weeks. Thank you so much.