开发者_开发问答
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this questionI'm trying to find a way to detect sound frequency being recorded by iPhone's Microphone. I'd like to detect whether the sound frequency is going up or down.
you can try to use SCListener. It's a small open-source class and very easy to use
EDIT: The formatter does not like the _ in the name. Here is the link. http://github.com/stephencelis/sc_listener
To detect frequency you should check out the fast Fourier transform (FFT) algorithm.
Note that the SC_listener does not work on iPhones running iOS 3.0 or above, check in AVAudioRecorder and FFT. It somehow works in the simulator though....
For simple pitch detection, I think the FFT is good enough. Try look into Aurio Touch 2 and vDSP reference in accelerate framework.
I wrote some code with explanation for tracking pitch in C. It uses the FFT, which is not the optimal method, but you can see if this is good enough for your application. Ideally, you'd replace the FFT with something hardware accelerated.
http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html
https://github.com/bejayoharen/guitartuner
Beethoven looks like a good option: https://github.com/vadymmarkov/Beethoven
精彩评论