来自 FFT 的有用音频数据

发布于 2024-10-18 14:17:36 字数 276 浏览 2 评论 0原文

我正在尝试用 java 做一个简单的音乐可视化。我设置了两个线程,一个用于播放剪辑,另一个用于从剪辑中提取一大块字节以使用 FFT 进行处理。然后,可以将处理后的数组发送到将处理绘图的 JFrame,并用作某种视觉效果的参数。

但是,我不太确定如何处理这些数据。我现在只是使用功率谱,这给了我非常有限的响应,而且我意识到对于我想要做的事情来说太笼统了。如果有一个特别有帮助的特定 FFT 库,我愿意使用任何 FFT 库。但是,一般来说,进行 FFT 后我可以从数据中得到什么,以及如何使用它在视觉效果中显示相当准确的结果?

I'm trying to do a simple music visualization in java. I have two threads set up, one for playing the clip, and another for extracting a chunk of bytes from the clip to process with an FFT. The processed array can then be sent to the JFrame that will handle drawing, and used as a parameter for some sort of visual.

I'm not exactly sure what to do with the data, however. I've been just using a power spectrum for now, which gives me very limited response, and I realize is too general for what I am trying to do. I'm open to using any FFT library out there, if there is a specific one that will be especially helpful. But, in general, what can I get from my data after doing an FFT, and how can I use to show decently accurate results in the visuals?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋风の叶未落 2024-10-25 14:17:36

给定相同的数据,所有 FFT 都会做几乎相同的事情。您可以改变的 FFT 参数包括比例因子、FFT 长度(较长将为您提供更高的频率分辨率,较短将为您提供更好的时间响应)以及(预)数据加窗,这将减少“飞溅”或光谱峰值的光谱泄漏。您可以对 FFT 进行零填充,以插值看起来更平滑的结果。您可以对多个连续 FFT 的幅度结果进行平均,以降低本底噪声。您还可以使用缩放函数,例如对数缩放(或对数对数,例如两个轴上的对数)来呈现 FFT 幅度结果。

复杂 FFT 的相位通常对于任何可视化都不重要,除非您正在进行某种类型的相位声码器分析+再合成。

All FFTs will do pretty much the same thing given the same data. The FFT parameters you can vary are the scale factor, the length of the FFT (longer will give you higher frequency resolution, shorter will give you better time response), and (pre)windowing the data, which will cause less "splatter" or spectral leakage of spectral peaks. You can zero-pad an FFT for interpolating smoother looking results. You can average the magnitude results of several successive FFTs to reduce the noise floor. You can also use a scaling function such a log scaling (or log log, e.g. log on both axis) for presenting the FFT magnitude results.

The phase of a complex FFT is usually unimportant for any visualization unless you are doing some type of phase vocoder analysis+resynthesis.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文