我正在尝试在java中进行简单的音乐可视化。我设置了两个线程,一个用于播放剪辑,另一个用于从剪辑中提取一大块字节以使用FFT进行处理。然后,处理后的数组可以发送到将处理绘图的JFrame,并用作某种视觉的参数。
但是,我不确定如何处理数据。我现在一直只是使用功率谱,这给了我非常有限的响应,我意识到这对我想做的事情来说太笼统了。我愿意在那里使用任何FFT库,如果有一个特别有用的话。但是,一般来说,在进行FFT后我可以从我的数据中获得什么,以及如何使用在视觉效果中显示相当准确的结果?答案 0 :(得分:2)
在给定相同数据的情况下,所有FFT都会做同样的事情。您可以改变的FFT参数是比例因子,FFT的长度(更长的时间将提供更高的频率分辨率,更短的时间将为您提供更好的时间响应),以及(预)窗口化数据,这将导致更少的“飞溅”或光谱峰值的光谱泄漏。您可以对FFT进行零填充以插入更平滑的结果。您可以平均几个连续FFT的幅度结果,以降低噪声基底。您还可以使用缩放功能,例如日志缩放(或日志记录,例如,记录两个轴)来显示FFT幅度结果。
复杂FFT的阶段通常对于任何可视化都不重要,除非您正在进行某种类型的相位声码器分析+再合成。