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?