我最近选择了一个项目,我需要对传入的麦克风数据执行实时滑动FFT分析。我选择的环境是OpenGL和Cinder,并使用C++。STFT /滑动FFT实时数据
这是我第一次在音频编程方面的经验,我有点困惑。
这就是我想在我OpenGL应用程序来实现:
因此,在每一帧,有输入数据的一部分。在for循环(因此多次通过)中,将消耗当前数据的窗口并对其执行FFT分析。对于for循环的下一次迭代,窗口将通过数据等提前“跳跃大小”,直到达到数据的末尾。
现在这个过程必须是连续的。但是,正如你在上图中看到的那样,只要我当前的应用程序框架结束并且下一帧的数据进入时,我就无法选择离开前一帧的位置(因为数据已经消失)。你可以在图中看到蓝色区域在两帧之间。
现在你可以说,选择window-size/hop-size的方式永远不会发生,但这是不可能的,因为这些参数应该在我的项目中留给用户配置。
对于面向C++ 11的这种处理的建议也非常受欢迎!
谢谢!
我不明白这个字眼:*“只要N个样本的数量完成,当前缓冲区的处理完成,下一个输入缓冲区的第一窗块将不相关的差距与上次窗口块到k来自上一个缓冲区的数据“* - 也许您可以为我们绘制该部分的一些ASCII图表? – 2015-02-09 05:17:38
@JohnZwinck我收录了一张图片,希望能够展示我想要达到的目标。谢谢! – Sepehr 2015-02-09 19:39:21