All Projects → tjrantal → PolyphonicPitchDetection

tjrantal / PolyphonicPitchDetection

Licence: other
An attempt to implement Klapuri 2006 Multiple fundamental frequency estimation by summing harmonic amplitudes congress publication

Programming Languages

java
68154 projects - #9 most used programming language
matlab
3953 projects
M
324 projects
Mathematica
289 projects
An open source (licensed with GPL 2.0 and above) Java-program to do polyphonic pitch detection from standard audio in (uses the default audio in with 16-bit mono at 44100 Hz, modify Capture.java to suit your setup).

The project is an attempt to implement the polyphonic pitch detection method described in Anssi Klapuri's (list of publications http://www.cs.tut.fi/~klap/iiro/ and http://www.elec.qmul.ac.uk/people/anssik/publications.htm) congress publication
Klapuri, A., " Multiple fundamental frequency estimation by summing harmonic amplitudes," 7th International Conference on Music Information Retrieval (ISMIR-06), Victoria, Canada, Oct. 2006. 
http://www.cs.tut.fi/sgn/arg/klap/klap2006ismir.pdf
 and doctoral thesis:
Klapuri, A. " Signal processing methods for the automatic transcription of music," Ph.D. thesis, Tampere University of Technology, Finland, April 2004.
 http://www.cs.tut.fi/sgn/arg/klap/phd/klap_phd.pdf

The current version needs to be restarted sometimes in order to initiate the sound capture (could be specific to my latop and operating system). The current version is able to detect two notes from my electric guitar consistently. I am not likely to improve the implementation substantially, unless I notice some bugs.  

I started the project with the hopes of implementing polyphonic pitch detection to be used in a Frets of Fire/Guitar Hero type game by pluggin an actual electric guitar into the audio in. Also, tuning guitar with polyphonic pitch detection would be pretty nifty (http://www.tcelectronic.com/polytune.asp), or the pitch detection could be used for off-line transcription. The current version has a massive lag on my HP mini laptop, which makes it unsuitable for real-time stuff. N.B. the octave implementation in the octaveTest folder might be more useful for off-line transcription (although frequency cancellation isn't implemented similarly to the Java version).

Contributions from other people taken from the internet (in addition to Java-tutorials for GUI, sound capture etc.);
FFT-transform	http://introcs.cs.princeton.edu/java/97data/FFT.java.html
		
Written by Timo Rantalainen tjrantal at gmail dot com 2011 - 2014. Please let me know if you improve the code and make it work!

Use the ant build.xml to build the project and to create a jar. 

Execute JAR:
java -jar PolyphonicPitchDetection.jar
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].