I made the app MUSICAL SCORE that reads MIDI commands from a MIDI device and displays the notes on a musical score. I have been asked a number of times by violin and acoustic guitar players that they would like to see their notes on musical score. I would like to see the notes of my voice. This app has never been done so it was worth a try. I would call it Voice Score. I figured out how to read the raw sound data from the microphone into an array of about 50ms in duration. This involved about 5000 amplitude points (+-32000) of data taken at an intervals off 44100 hertz. Now all that I would need to do in extract the frequency from this array of points of amplitude. Simple yes, the hard part was done! A Fourier transform would involve the integration of the sin and the cos functions for every note of the musical scale. This would be too slow for a prompt musical score. I tried the zero crossing method that counts the number of times the sound data crosses the zero axis. The frequency jumped all over the scale. Harmonics really threw the calculation off. I had no idea that so many harmonics crossed the zero axis. Next it tried filtering to remove the harmonics without effecting the highest frequency that I wanted to measure, about 1500 HZ. After days of adjusting I finally got the thing to read the frequency of pipe organ, see the attached video. No matter what I tried I could never measure more complex sounds. No algorithm seemed to work at all with the human voice. Perhaps I have another failure. I will take a break and think about it. I hate failures but it was a learning experience.
http://www.angelfire.com/scifi2/zpt/temp/freq.MOV Frank Znidarsic

