为了解决一个棘手的问题(至少对我来说),我绞尽脑汁。
在播放音频文件(使用Java)时,我希望信号振幅随时间显示。
我的意思是,我想实现一个小面板,显示一种示波器(频谱分析仪)。音频信号应该在时域中观看(垂直轴是振幅,水平轴是时间)。
有人知道怎么做吗?有没有我可以信赖的好教程?因为我对Java知之甚少,所以我希望有人能帮助我。
更新:
基本上我想要的是相对于时间的振幅,而不是频率。音频信号应该在时域中观看(垂直轴是振幅,水平轴是时间)。
发布于 2010-04-28 02:56:00
基本方法是这样的:
例如。
public void paint(Graphics g)
{
short[] samples; // the samples to render - get this from step 1.
int height = getHeight();
int middle = height/2;
for (int i=0; i<samples.length; i++)
{
int sample = samples[i];
int amplitude = sample*middle;
g.drawLine(i, middle+amplitide, i, middle-amplitude);
}
}这将在您的组件中绘制一个振幅-时间图。它将与组件的高度一样高,与采样数一样宽。
要获得动画效果,您需要定期将一个新的short[]数组放入组件中,并调用repaint() (当然,所有这些都在Swing事件线程上进行)。
祝好运!
发布于 2010-04-12 04:15:17
频谱分析仪基于Fast Fourier Transforms。你应该好好读一读这些东西。它们将信号从时域转换到频域。
那么你想要的是时间还是频率呢?
发布于 2010-04-12 04:15:43
转义- http://sourceforge.net/projects/fscape/
https://stackoverflow.com/questions/2618517
复制相似问题