Hi Steve, i saw on the sources that you are using Peak Pruning as described by Tolonen and Karjalainen. But, have you tried the variation of it called “Multipitch Analysis and Tracking for Automatic Music Transcription by Richard Baumgartner” ?
Is seems promissor and maybe worth to test the results http://scholarworks.uno.edu/cgi/viewcontent.cgi?article=1083&context=td
If you suceed to implement this algorithm we can use it as a second “pitch spectrogram” that can be displayed upon the menu access.
Also, for noise reduction, it seems that there is an good algo called: “observer based beamforming algorithm, as described by Richard Baumgartner”
http://www.coe.pku.edu.cn/tpic/201281135058126.pdf
http://www.who.int/occupational_health/publications/noise1.pdf
http://www.coe.pku.edu.cn/tpic/2011118185256817.pdf
http://www.vbforums.com/showthread.php?512470-Soundwaves-Calculate-phase-from-distance
I´m asking all of these, because we may get better results of pitch identification, and also the right path to build a accurated sound pattern algorithm, if we can actually identify the sources of the soundwaves. I mean, i was reading some articles on how to measure the distance of a given sound to the human ear to better identify the sound source, and it seems that if we can be able to identify the different sound sources calculating the distance of their sources, we can isolate them better, once they are identified. For example let´s say that we have 2 different persons speaking one in front of the other, and Im listening to bóth of them. Perhaps identifying which sound belongs to which people can be calculated computing the distance between them. I mean, different sound sources positioned in different distances may have a distinguishable pattern on the spectrogram. If we can actually measure the distance between the XX frequency related to the XX person (assuming we can identify it), then we can isolate the other sound, simply measure the distance of the source.
Example:
Person A is distance 10 meters from me. He says “Ahhh”…the sound travels at a given speed and reach my ears. When the 1st sound wave come to my ears it have YYY samples of sound at the correspondant frequency and volume. So say that we can measure the 1st sound wave containing 100 samples (represented here as air moleculles that vibrates the bones inside my ear). Then milliseconds later, comes it´s 2nd sound wave at XXX frequency, and YYY volume etc…It also will produce some sort of signature that is the same from the 1st sound wave, right ?
but…Say we also have a Person B located few meters behind the person A and also say “Ahhh”.
Person B is located 15 meter from me…When he says “Ahhh” his sound wave reaches my ears and produces the same signature as described above. But…his samples are different from Person A, and yet they can be verified, right ?
So, no matter if we can produce a pattern for each sound way, considering (frequency, volume, distance from the source), we can isolate the other sound, simply selecting the frequencies related to person A and frequencies related to person B at a given period of time.
Cans such thing be done ?