2011-02-17 127 views
2

我理解这个的一般概念,但我对java图形编程非常新颖。简单的音乐可视化器

这个想法是:
1.从一首歌中获取字节数据并存储在一个字节数组中。
2.获取一小块字节数据,执行FFT,并获得某种有用的数据(一旦执行FFT后您可以​​执行不同的操作)。
3.将处理过的数据馈送到图形函数,该图形函数将以某种方式将其用于任何可视化处于活动状态的图形函数。

我很难搞清楚如何实时做2和3。我想要处理的数据,播放的歌曲以及处理的数据影响当前正在同时绘制的图形功能。我明白如何分开做这些事情,但我无法弄清楚如何把它们放在一起。

回答

0

..我明白如何分开做这些事情,但我不知道如何把它放在一起。

线程。

2

傅立叶变换不能实时进行(甚至不是快速傅立叶变换)。您必须能够通过预读来“领导”音乐源以生成频率直方图。您还需要一些非零长度的样本进行分析。为了使其看起来是实时的,您的分析仪可能会抓住例如半秒,每秒十次(因此有重叠)的样本,计算每个样本的FFT,然后显示从当前点开始的样本之间的差异音乐和下一个音乐(它将显示仅在十秒内发生的频率强度,同时仍然具有足够的信号来执行有意义的分析)。

是的,你需要线程。很少几个。

+0

我不太明白你为什么需要预读。如果以44.1kHz采样率计算2048点FFT,则中心将仅延迟23毫秒,这在30fps时小于1帧。或者它是一个计算时间问题而不是理论问题? – Justin 2011-02-17 18:28:22