I am learning about the DFT in order to design a fundamental pitch detector for the human singing voice. Using the cepstrum technique.
I am concerned about the latency for low frequency detection at <100Hz. Is it always necessary for the DFT algorithm to work with sample length that contains an entire wavelength of the lowest frequency being detected, or can the window be shorter than the wavelength? For example if the singer sings <100 Hz then there is the possibility of the >10ms latency. This latency could get worse with further processing.
I am also concerned about frequency resolution at low frequencies. The standard DFT is inherently linear this causes poorer pitch discrimination at lower frequencies, If frequency index 1 was 50Hz, then the next bins would be 100Hz and 150Hz. The steps are clearly too big for pitch detection. If the index started at a lower frequency to get finer graduations, say 1 Hz steps, then the latency becomes 1 second, if what I said in the previous paragraph is true. Btw 1Hz steps is still pretty poor for pitch detection.
Are there more sophisticated DFT algorithms that address these issues?
I know products like Antares Auto-Tune have pretty fast detection, so this stuff is possible.