拉平 FFT 图(处理)

Level out FFT graph (Processing)

我正在尝试在 Processing 中制作音乐可视化工具,但这部分并不是非常重要,我正在通过 Minim 使用快速傅里叶变换。它工作完美(读取数据),但左(低音)端有一个大尖峰。 'level' 解决这个问题的最佳方法是什么?
我的源码是here,有兴趣的可以看看

提前致谢,
-tlf

您显示的频谱看起来相当典型的复杂音乐声音,其中您在较低频率处有一个复杂的部分,但也有一些从低频混乱中出现的清晰谐波。而且,实际上,这些谐波非常清晰……音乐通常很复杂。有时,例如,如果长笛演奏一个清晰的音符,人们会得到一个或两个漂亮的峰值,但更常见的是瞬变和打击声音会导致非常复杂的频谱,尤其是在低频时。

直接对比视频,我觉得视频有点奇怪。我的猜测是,他们显示的频谱要么是远离零的一小部分频谱的放大,要么只是基于音乐但不对应于实际频谱的图形算法。也就是说,如果您真的想让某些东西看起来与该视频非常相似,那么您需要的不仅仅是频谱,尽管频谱可能是一个很好的起点。这里有几点需要注意:
1) 有一个突出的峰值,偶尔会出现在 anchor 一词的 "N" 正上方。音频中的单个主峰应清晰为近似纯音。
2) 偶尔会有另一个峰值随着这个峰值随时间变化,这通常是第二个峰值是谐波的标志,但很多时候第二个峰值不存在。
3) 古怪行为的一个很好的例子,是2:26。这次只是伴随着一点点激光音效,然后基本上是嘶嘶声。嘶嘶声应该是一种没有峰值的广谱声音,通常加权到较低的频率。但是,在 2:26 处,只有 "N" 上方的一个大峰,没有其他任何东西。

原来我要做的是将数据乘以 Math.log(i + 2) / 3 其中 i 是被引用数据的索引,从左侧(低音)开始为零索引。 您可以在上下文 here

中看到这一点