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

Reply via email to