MATLAB-缺少FFT的基本原理 [英] MATLAB - Missing fundamental from an FFT

查看:71
本文介绍了MATLAB-缺少FFT的基本原理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在从事我的四年级项目(计算机科学),该项目涉及音乐的自动转录->乐谱.目前,我正在Matlab中进行此操作,但在某个阶段必须将其转换为Java.

I am currently working on my fourth year project (computer science) which involves the automatic transcription of music -> sheet music. I am doing it in Matlab at the moment but will have to be converted to java at some stage.

我的问题: 我的程序返回了纯正弦音的正确音符,从自然乐器弹奏的音符中检索基本频率时,我现在遇到了一个问题.对于某些音符,代表音符基本面的峰值似乎完全消失了.例如,当我从车库乐队演奏G3音符时,它显示为G4,因为我的绘图中仅出现1次,3次,5次和7次谐波.我尝试添加图片,但是由于这是我的第一篇帖子,所以我不允许这样做.任何朝着正确方向的指针将不胜感激.

My problem: I have my program returning the correct notes for pure sine tones, I have now encountered a problem when it comes to the retrieval of the fundamental frequency from a note played by a natural instrument. With certain notes, the peak representing the fundamental of the note seems to be missing entirely. For example when I play a G3 note from garageband, it is shown as a G4, as only the 1st, 3rd, 5th and 7th harmonics are appearing in my plot. I tried to add the image but as this is my first post it wouldn't allow me. Any pointers in the right direction would be greatly appreciated.

推荐答案

这并不罕见.对于男性声音,大型弦乐器和许多其他音调音源,基本音缺失或几乎缺失是很常见的.

This is not unusual. It's very common for the fundamental to be missing, or nearly so, for male voices, big string instruments, and many other pitched sound sources.

与正弦波函数发生器相比,仅使用FFT峰值结果就很难从实际乐器中确定音符.这是因为音调与峰值频谱频率不同.音调是一种心理声学的感知现象.这就是您需要继续阅读的内容.关于该主题的研究论文很多.

That makes using an FFT peak result alone extremely poor at determining musical notes from actual musical instruments, as opposed to sinewave function generators. That's because pitch is different from peak spectral frequency. Pitch is a psycho-acoustic perceptual phenomena. So that's what you need to read up on. There are tons of research papers on the subject.

因此,您需要查看一套完全不同的算法.尝试进行倒谱(倒谱分析),谐波乘积谱,自相关和类似(AMDF,ASDF等滞后),RAPT(鲁棒性音高跟踪算法),YAA​​PT等.

So you need to look at a completely different set of algorithms. Try cepstrums (cepstral analysis), harmonic product spectrums, autocorrelation and similar (AMDF, ASDF, etc. lags), RAPT (Robust Algorithm for Pitch Tracking), YAAPT, etc.

添加:我写了更详细的

ADDED: I wrote up a more detailed explanation of pitched sounds with missing fundamentals in a blog post.

这篇关于MATLAB-缺少FFT的基本原理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆