我不知道你是否还需要那个,但是......
您想知道如何获得声音的实时频谱分析吗?
1.实现一个队列来获取音频样本的缓冲区
2.将程序计算的缓冲区和适当的窗口函数(通常是汉明或汉恩)的乘积作为浮点数组
3.对yelded数组进行FFT:每种语言都可能有算法......为您找到最好的算法,使用它并从每个输出系数中获取平方模块(Real_part^2 + Imaginary_part^2,如果FFT返回系数的代数表示)
对整个频段的系数求和:要知道与频率相关的系数,您只需知道第 k 个系数位于 (SampFrequency/BufferLength)*k Hz .....所以很容易找到频段边界
如果您需要在 [0 , 1] 区间内进行归一化,您只需将 3 个带状带值中的每一个除以 3 个之间的最大值即可
通过 Shift <= BufferLength 的 Shift 值弹出缓冲区队列并重新开始
来自 FFT alg 的系数的数量等于 BufferLength(这是因为离散傅里叶变换定义),因此,当您选择长缓冲区时,频率分辨率会更好,但程序会变慢。在 BufferLength 音频帧之后,光强度不会变化,在 Shift 音频帧之后会出现 buf ......并且高比率 beetwen BufferLength 会给你缓慢的光线变化......所以你必须选择适合你的愿望的参数,记住你刚刚打开和关闭一些灯....让您的 alg 快速和低保真!
最后要做的是从混音器的 eq 旋钮中发现频段……我不记得这些信息是否在混音器手册上