【发布时间】:2012-05-04 17:49:26
【问题描述】:
我目前正在为我的第二年做一个项目。我应该在java中编写一个调谐器。我选择做吉他调音师。
在网上找了一圈后,我找到了一个做 FFT 的 java 代码。我对其进行了一些更改,理解并对其进行了测试。我知道它工作正常(我制作了一个图表并使用简单的正弦函数查看了不同的峰值)。
我现在正试图找到基频。据我了解,这个频率是由第一个峰值给出的。
因此,我想创建一个方法,例如查找我的 FFT 的前 5 个峰值并将它们及其索引提供给我。
我首先做了一个简单的方法,将频谱图的每个点两个两个进行比较,当符号发生变化时,我就知道有一个峰值。这种方法适用于理想信号(没有任何噪声)。但是,如果我添加噪音,它将变得完全无用。
我在java方面真的很差(我实际上是从这个项目开始的,基本上我上面描述的简单功能是我的杰作......只是让你了解我的水平)。
谁能帮助我?我真的很感激! :) 提前致谢!
祝你有美好的一天!
火神
【问题讨论】:
-
音高不是 FFT 峰值频率。音高频率可能不是第一个峰值或任何峰值。特别是对于从吉他的低音录制的声音。
-
感谢 hotpaw2 的回答。我也提出了音高的概念。据我了解,音高与频率有关,所以我认为找到频率可以让我找到音高。
标签: java fft frequency spectrogram