Melody/Vocal extraction I'm new to the whole DSP area, but I've built a program which plays music and does FFT to produce some cool visuals for the music in realtime.

The FFT algorithm I chose was from a C# library called NAudio. I applied a hamming window before shipping it off to the FFT, from which I get an array of complex. Nothing special. Works fine.

But now I want to display this data to the user, so I converted the bins to magintudes following this formula: magnitudes[i] = sqr(real[i]² + imaginary[i]²)

This with some amplification yields a pretty good result to display for the user, but I feel that most of the levels being displayed are just random noise, I want to show the user what he/she "hears", where the melody or vocal are being amplified OVER the other background music.

The thing I'm unsure of is how to approach this problem. What can I do to filter out everything else and only have the melody/vocals left. I can understand there's not 100% clean way you can do this, but what method could give me a decent result?

Thank you
I remember reading a similar question (either here or on stack overflow) abouylt melody extraction. In any event someone did create such a project as a PhD thesis (luckily I bookmarked the site). He even offers his work (for research/personal/non-commercial use) for windows mac and linux http://www.justinsalamon.com/melody-extraction.html#demo if you could somehow integrate this to your application you can use the extracted melody to display the visuals, but still just play the original song from speakers/headphone