cwavpcmriff

How to extract frequency out of WAV sample data?


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?


Solution

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