I am trying to develop an Android application that would depend on melody recognition using humming/singing. Before diving into signal processing myself I would like to know if there is any library out there (preferably in Java) that would help me achieve this task.

I did some research and found the following:

  1. WaoN. It's not a library and produces somewhat decent output, but pretty noisy.

  2. CLAM. This is a C++ library that I didn't get to compile yet to test its output.

I would like your input in the matter.

  • 1
    Is it reasonable for the library to expect a clean signal, with low noise? Also is "recognition" intended to match some known melodies, or rendering humming to potentially new melodies? The first option may not require support of MIDI format, just get some kind of tune fingerprint (which is much easier - e.g. it may just need to recognise up/same/down/up for pitch - enough notes can be good enough to narrow down potential matches). Apr 27 '15 at 14:54
  • 1
    Thanks for your comment. Sorry if I was unclear. I need to convert the melody to MIDI. It won't be an audio search using a fingerprint at all.
    – thelinuxer
    Apr 27 '15 at 15:34

Perhaps aubio can work for you?

Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio

It is a C library that claims to have no dependencies, but does have a Python wrapper and can work with Linux via JACK which looks to be compatible with Android.

Good luck, keep us posted with your results (I know this mentions OS X, but I'd pick up an Android device if your solution is clean and works with instruments).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.