How to extract frequency out of WAV sample data?

ikyr9999 picture ikyr9999 · Nov 16, 2011 · Viewed 17.9k times · Source

I'm developing an application in c to read simple PCM WAV files. My question is, how should I interpret the samples from the data chunk, so that I can extract the sample's frequency?

Given a WAV example, how can the original data represent frequencies. E.g. this data chunk, 24 17 1e f3, for stereo, 16 bits, the left channel sample is, 0x1724 = 5924d, means 5924Hz ? How can that be, for samples that are signed or frequencies that humans can´t hear?

Answer

AShelly picture AShelly · Nov 17, 2011

Your assumption is incorrect. The sample data is simply a digital representation of the actual sound wave. The numbers represent wave amplitude, the array offset represents time.

I would suggest reading about How Audio is Represented, specifically PCM.

To convert this data (amplitude-vs-time) to frequency data, you need to understand the basic concepts of The Fourier Transform

I really suggest taking the time to read these before trying to do any audio processing.