Multiple-Pitch (fundamental frequencies) detection in Polyphonic music

5 views (last 30 days)
Hi everybody!
I'm trying to complete my project which is the MATLAB program which detects pitches (F0s) in polyphonic music signal. When I say signal, I mean one of the simplest kind of it - it is 2 to 5 monophonic samples of piano tones, 500ms each, added together to make POLYPHONIC signal.
What I have done so far is to produce random polyphonic 500ms signal and main loop which analyze polyphonic signal frame by frame. Frame = 4096 points of signal (93ms) windowed by Hamming window. Frame's overlap = 50%. There is FFT (power spectrum) of each frame calculated and then analysis begins.
The main problem that I encountered is following. Not in every maximum peak in the frame is always F0, sometimes it is subharmonic of it. How to distinguish subharmonic (ex: F0/2, F0/5 ...) from F0 peaks?
I found some article of Chunghsin, Roebel and Rodet: LINK. They introduced Mean-Bandwidth to score so called Spectral Smoothness. Smaller MBW -> smaller variations - it was introduced as a tool to distinguish subharmonic from real F0. I tried to implement it, but it does not work. I don't know if it is due to the implementation or it's something else.
Can you help me? Does anyone know any tool/function/method which help me to distinguish subharmonic from real F0? Maybe someone has already completed such project and can help me?
Waiting for your answers, Filip

Answers (0)

Categories

Find more on Just for fun in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!