Click here to Skip to main content
15,889,403 members
Please Sign up or sign in to vote.
5.00/5 (3 votes)
See more:
Hi all,

I'm currently working on a program that analyses a wav file of a solo musician playing an instrument and detects the notes within it. To do this it performs an FFT and then looks at the data produced. The goal is to (at some point) produce the sheet music by writing a midi file.

I just wanted to get a few opinions on what might be difficult about it, whether anyones tried it before, maybe a few things it would be good to research. At the moment my biggest struggle is that not all notes are purely one frequency and I cannot yet detect chords; just single notes. Also there has to be a pause between the notes I am detecting so I know for sure one has ended and the other started. Any comments on this would also be very welcome!
Posted

The problem is somewhat similar to DTMF recognition (figuring out "two-sound chords" produced by telephone buttons). A very efficient Goertzel Algorithm[^] is used rather widely for that. It may or may not help you solve the problem at hand, but it's definitely worth giving a try. Good luck!
 
Share this answer
 
Comments
Kim Togo 29-May-11 0:56am    
Good advice, my 5.
Nyx.Carpenter 2-Jun-11 0:14am    
Thank you! I'm currently using the Fast Fourier Transform. If I had the skills I would try to implement this one though! =)
Musical phenomenons - notes of the frequency being played may contain occurrences of the note's higher octaves. E.G. A440 (440Hz) may contain instances of A5 (880Hz) and A6 (1760Hz) etc. I've found this is more likely the lower the note gets.
 
Share this answer
 
This is an interesting project, but I can tell you you'll end up having a really hard time identifying chords, since you'll end up not only with a combination of notes, but a variety of byproduct frequencies. You're bound to find all sorts of interesting things, good luck!
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900