I want to give an audio wav file(instrumental - Violin etc) as input and I want to detect all the frequencies tones and to get updated in text sequences in order they have been played. I think I should use fft spectrum at regular intervals to get their frequencies values. Help me out on how to proceed.
-
1possible duplicate of http://stackoverflow.com/questions/11388053/how-to-get-a-list-of-notes-present-in-a-wav-file and many, many others. – tom10 Mar 19 '13 at 15:41
-
1A good solution might be a multi-year graduate research project, depending on the problem constraints. You could proceed by reading hundreds of research papers on automated music transcription (MIREX, et.al.) – hotpaw2 Mar 19 '13 at 23:24
1 Answers
This is a very difficult problem, and you will need a good knowledge of signal processing in order to get any kind of usable results. You're right that the FFT is a good starting point, but you should read some of the other posts here and papers around the web. Search for 'pitch estimation'. 'pitch detection' or 'music transcription'. You'll need to understand how a complex sound is comprised of a number of sinusoids at related frequencies ('harmonics') and how getting the peak of the FFT won't necessarily give you the pitch (some instruments have a spectrum where the fundamental frequency (ie the pitch) isn't the largest peak.
The Wikipedia page on Pitch Detection gives a good starting point. I'd suggest reading a few papers on the Autocorrelation Method and Harmonic Sum Spectrum.

- 1
- 1

- 29,792
- 6
- 64
- 93