[Solved] Is my program ready for FFT?


  1. What does the data in my List is representing in its current form?

In its current form, you are getting the raw byte sequence from the file, except from the header which you are removing explicitly. The mapping between raw bytes and the corresponding data sample value is in general non-trivial, and varies according to the selected encoding scheme. See this wave file specification for more details.

  1. I read a lot about Sampling the signal first, but since the file is already in a digital format so should I be worried about sampling because I think it is done during ADC only. On the other hand if it is still needed to be done, then why should I be doing that as I’m already using the whole file.

Indeed wavefiles contain digitally sampled data, so you do not need to be worried about sampling this data. You will however very likely need to know how this data was sampled, and in particular the sampling rate used. That information is contained in the wav file header.

  1. Is the data in its current form ready for the FFT?

Simply put, no. As I indicated above, the data is still in raw byte form and using CopyTo to try and convert the raw bytes to an array of double just doesn’t cut it.

  1. What are the things I’m missing right now for preparing the data for FFT?

You would need to convert the raw byte sequence into data sample values. If you were to do this yourself, you’d have to take into account the number of bits per sample, the number of channels (to deinterleave the channels if you are not dealing with mono) and the encoding format (PCM, IEEE float, etc.).
Fortunately there are several libraries (such as NAudio) which can perform this decoding for you. Alternatively you may want to have a look at answers this post.

1

solved Is my program ready for FFT?