0

我做了一些研究,但我找不到我到底在寻找什么。目前,我必须通过 com 端口发送通道值。

例如:

  • 文件内容freqs.ini

    低=0-xx khz;
    中=xx-yy khz;
    高=yy-zz khz;
    

然后我将按百分比获取值,例如

  • 期望值

    lowPercent  = 10;
    midPercent  = 77;
    highPercent = 53;
    

因此,我将能够通过 rs232 发送这些值,我的房间将变成俱乐部:)(我正在使用此代码来照亮 LED 灯条)。我找到了一些频谱分析仪项目,但它们都有 9 个通道,即从low-lowhigh-high的 3*3 组合。

我知道如何与 com 端口通信,但如何获得我之前设置的 3 个频率范围的整数值?

4

1 回答 1

0

我不知道你是否还需要那个,但是......

您想知道如何获得声音的实时频谱分析吗?

1.实现一个队列来获取音频样本的缓冲区

2.将程序计算的缓冲区和适当的窗口函数(通常是汉明或汉恩)的乘积作为浮点数组

3.对yelded数组进行FFT:每种语言都可能有算法......为您找到最好的算法,使用它并从每个输出系数中获取平方模块(Real_part^2 + Imaginary_part^2,如果FFT返回系数的代数表示)

  1. 对整个频段的系数求和:要知道与频率相关的系数,您只需知道第 k 个系数位于 (SampFrequency/BufferLength)*k Hz .....所以很容易找到频段边界

  2. 如果您需要在 [0 , 1] 区间内进行归一化,您只需将 3 个带状带值中的每一个除以 3 个之间的最大值即可

  3. 通过 Shift <= BufferLength 的 Shift 值弹出缓冲区队列并重新开始

来自 FFT alg 的系数的数量等于 BufferLength(这是因为离散傅里叶变换定义),因此,当您选择长缓冲区时,频率分辨率会更好,但程序会变慢。在 BufferLength 音频帧之后,光强度不会变化,在 Shift 音频帧之后会出现 buf ......并且高比率 beetwen BufferLength 会给你缓慢的光线变化......所以你必须选择适合你的愿望的参数,记住你刚刚打开和关闭一些灯....让您的 alg 快速和低保真!

最后要做的是从混音器的 eq 旋钮中发现频段……我不记得这些信息是否在混音器手册上

于 2013-05-18T06:37:07.520 回答