Olga Dalton
Olga Dalton

Reputation: 849

Easy and straight-forward FFT of MP3 file

I have a MP3 file and need to constantly detect and show Hz value of this playing MP3 file. A bit of googling shows that I have 2 opportunities: use FFT or use Apple Accelerate framework. Unfortunately I haven't found any easy to use sample of neither. All samples, like AurioTouch etc, need tons of code to get simple number for sample buffer. Is there any easy example for pitch detection for iOS?

For example I've found https://github.com/clindsey/pkmFFT, but it's missing some files that its' author has removed. Anything working like that?

Upvotes: 1

Views: 3107

Answers (3)

Bjorn Roche
Bjorn Roche

Reputation: 11469

Here is a good place to start:

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

There are also other question on SO.

However, as indicated by other answers, this is not something that can just be "magically" done. Even if you license code from someone (eg, iZotope, and z-plane both make excellent code for doing what you want to do), you still need to understand what's going on to get data in and out of their libraries.

Upvotes: 1

jackdev23
jackdev23

Reputation: 116

If you need fast pitch detection go with http://www.schmittmachine.com/dywapitchtrack.html

You'll find a IOS sample code inside.

If you need FFT you should use Apple Accelerate framework.

Hope this help

Upvotes: 0

Rad'Val
Rad'Val

Reputation: 9231

I'm afraid not. Working with sound is generally hard, and Core Audio makes no exception. Now to the matter at hand.

FFT is an algorithm for transforming input from time domain to frequency domain. Is not necessarily linked with sound processing, you can use it for other things other than sound as well.

Accelerate is an Apple provided framework, which among many other things offer an FFT implementation. So, you actually don't have two options there, just one and its implementation.

Now, depending on what you want to do(e.g. if you favour speed over accuracy, robustness over simplicity etc) and the type of waveform you have(simple, complex, human speech, music), FFT may be not enough on its own or not even the right choice for your task. There are other options, auto-correlation, zero-crossing, cepstral analysis, maximum likelihood to mention some. But none are trivial, except for zero-crossing, which also gives you the poorest results and will fail to work with complex waveforms.

Upvotes: 1

Related Questions