Multiple-Pitch (fundamental frequencies) detection in Polyphonic music

5 次查看(过去 30 天)
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

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Just for fun 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by