I want to develop musical notes detector as my degree project and I want to do it from scratch. I have written code for ".wav" file which extracts all info from that audio music file and gives me amplitude as a result.
Then I have written a code for DFT - it gives me output as a complex number where one of the axis (real/imaginary) is amplitude/magnitude and other is Phase.
Now the question I want the answer in frequency (in Hertz not in vector) so I can check whether my DFT gives me the proper output or not. How can i convert my DFT output into frequency ?
I have to code this in C language and I don't want to use any built-in library
You need to find the peak magnitude then work out the corresponding frequency:
magnitude = sqrt(re*re+im*im)
i_max
.freq = i_max * Fs / N
, here Fs
= sample rate (Hz) and N
= no of points in FFT.See this answer for a more detailed explanation of how bin indices and frequency are related.