Satish
Satish

Reputation: 203

Audio analyzer for finding songs pitch

Is there anyway to analyze the audio pitches programmatically. For example, i know most of the players show a graph or bar & if the songs pitch is high @ time t, the bar goes up at time t .. something like this. Is there any utility/tool/API to determine songs pitch so that we interpolate that to a bar which goes up & down.

Thanks for any help

Upvotes: 1

Views: 2803

Answers (4)

rlbond
rlbond

Reputation: 67749

To find the current pitch of a song, you need to learn about the Discrete Time Fourier Transform. To find the tempo, you need autocorrelation.

Upvotes: 1

eogas
eogas

Reputation: 109

Well, unfortunately I'm not really an expert on audio with the iPhone, but I can point you towards a couple good resources.

Core Audio is probably going to be a big thing in what you want to do: htp://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html

As well, the Audio Toolbox may be of some help: htp://developer.apple.com/iphone/library/navigation/Frameworks/Media/AudioToolbox/index.html

If you are have a developer account, there are plenty of people on the forums that can help you: htps://devforums.apple.com/community/iphone

You'll have to add in a 't' in the http portion of those URLs, as I cannot post more than one hyperlink (sorry!).

Upvotes: 2

Naive but robust: transform a modest length segment into Fourier space and find the peaks. Repeat as necessary.

Speed may be an issue, so choose the segment length as a power of 2 so that you can use the Fast Fourier Transform which is, well, fast.

Lots of related stuff on SO already. Try: https://stackoverflow.com/search?q=Fourier+transform

Upvotes: 5

eogas
eogas

Reputation: 109

I think what you may be speaking of is a graphic equalizer, which displays the amplitude of different frequency ranges at a given time in an audio signal. It normally equipped with controls to modify the amplitudes between the given frequency ranges. Here's an example. Is that sort of what you're thinking of?

EDIT: Also, your numerous tags don't really give any indication of what language you might be using here, so I can't really suggest any specific techniques or libraries.

Upvotes: 0

Related Questions