How should I implement accurate pitch-detection in Java for Android phones?

亡梦爱人 提交于 2019-12-07 16:02:26

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!