8

I'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.

Piotr Usewicz
  • 620
  • 2
  • 6
  • 13

6 Answers6

5

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

coneybeare
  • 33,113
  • 21
  • 131
  • 183
Morion
  • 10,495
  • 1
  • 24
  • 33
  • Seems SC_Listener is deprecated, for iOS 3.0+, you can try to use this tutorial, which works pretty well: http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/ – Raptor Aug 23 '11 at 03:02
2

To detect frequency you should check out the fast Fourier transform (FFT) algorithm.

Andrew
  • 967
  • 7
  • 8
2

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....

Groot
  • 13,943
  • 6
  • 61
  • 72
0

For simple pitch detection, I think the FFT is good enough. Try look into Aurio Touch 2 and vDSP reference in accelerate framework.

Ken Hui
  • 368
  • 3
  • 17
0

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

Bjorn Roche
  • 11,279
  • 6
  • 36
  • 58
0

Beethoven looks like a good option: https://github.com/vadymmarkov/Beethoven

iconoclast
  • 21,213
  • 15
  • 102
  • 138