C 频谱分析仪的计算值
我将如何实现下面WinAmp中的频谱分析仪 仅通过观察,我认为这些条显示输入音频数据特定频带的“音量水平”;然而,我不确定如何实际计算绘制条形图这一相当简单的任务所需的数据 据我所知,计算这些值可以通过使用FFT来完成——然而,我不确定如何计算这些值,给定一个输入数据缓冲区——我对FFT的理解是否正确?我如何对输入数据应用FFT,并从FFT中得到一个整数,表示特定频带的“体积”C 频谱分析仪的计算值,c,equalizer,C,Equalizer,我将如何实现下面WinAmp中的频谱分析仪 仅通过观察,我认为这些条显示输入音频数据特定频带的“音量水平”;然而,我不确定如何实际计算绘制条形图这一相当简单的任务所需的数据 据我所知,计算这些值可以通过使用FFT来完成——然而,我不确定如何计算这些值,给定一个输入数据缓冲区——我对FFT的理解是否正确?我如何对输入数据应用FFT,并从FFT中得到一个整数,表示特定频带的“体积” 绘图部分不是问题,因为我可以直接绘制到帧缓冲区并渲染出来。我在FPGA上做这个项目,使用NIOSII软CPU,以防有
绘图部分不是问题,因为我可以直接绘制到帧缓冲区并渲染出来。我在FPGA上做这个项目,使用NIOSII软CPU,以防有人想知道潜在的硬件限制。音频数据以96kHz的频率以24位数据的形式输入。这非常简单-只需使用众多FFT算法中的一种!大多数方法都需要浮点运算,但谷歌搜索只能找到整数。不过你很在行,FFT才是你想要的
关于创建所谓的“频谱分析器”,有大量的信息,必须有几十个完整的实现,源代码可以免费获得。例如,在谷歌搜索“频谱分析仪源代码C”就可以了。你可能正在寻找 编辑: 请详细说明你的问题: 计算这些值可以通过使用FFT来完成——然而,我不确定如何计算这些值,给定一个输入数据缓冲区:是的,你是对的;就是这样做的。您从当前播放的音频数据中提取一个(必要的小,因为)采样段,并将其馈送到一个(通常)离散的、仅实FFT(最著名、使用最广泛、速度最快的DFT DCT系列之一-事实上,FFTw中大多数DCT都有高度优化的版本)。然后取出下一个样本段并重复该过程。 FFT的输出将是输入的音频信号的频率分解-然后您需要决定如何显示它(即在FFT的输出上使用哪个函数,常见的候选函数是f(x)=x;f(x)=sqrt(x);f(x)=log(x))以及如何显示/动画以下读数(例如,你可以在时间方向上平均每个波段,或者你可以让最大值慢慢“下降”)
愤怒编辑: 其他链接,因为似乎有人知道如何否决投票,但不知道如何使用谷歌: