问题
I want to develop an application that would require accurate pitch-detection for musical instruments through the Android phone's microphone. Most suggestions I read of involve using Fast Fourier Transforms (FFT), but they mentioned it having issues with accuracy and processing power (considering it should run smoothly on a smartphone). One answer suggested a 5Hz error margin, which would be quite noticeable in the low frequency tone range. If the error is logarithmic rather than static in nature, the error margin from each note should be less than 10 Cents (1 Cent=100th root of a semitone, 1,200th root of an octave), which would be <(1.005792941...).
Are those issues correct? If so, are there better approaches for pitch detection? Are there open source libraries that do this, or will I have to write the algorithm on my own (while aiming to accurately detect possibly more than one note per second)? I have a basic Java knowledge.
Also, what are the expected limitations for frequency range sensitivity of the average smartphone's microphone?
来源:https://stackoverflow.com/questions/23589911/how-should-i-implement-accurate-pitch-detection-in-java-for-android-phones