声音到3个主要频率(低,中,高)

时间:2013-03-19 00:38:15

标签: c# audio spectrum

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

例如:

  • 文件freqs.ini

    的内容
    low=0-xx khz; 
    mid=xx-yy khz; 
    high=yy-zz khz;
    

然后我将按百分比获得值

  • 期望值

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

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

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

1 个答案:

答案 0 :(得分:0)

我不知道你是否仍然需要那个......但

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

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

2.使用缓冲区的产品和由程序计算为浮点数组的正确window function(tipming,Hamming或Hann)

3.do yelded数组的FFT:每种语言都有可能的算法....找到最合适的一个,使用它并从每个输出系数中取出square模块(Real_part ^ 2 + Imaginary_part ^ 2 ,如果FFT返回系数的代数表示)

  1. 你频段的总和系数:知道哪个系数与你刚知道第k个系数在(SampFrequency / BufferLength)* k Hz的频率有关.....所以很容易找到乐队边界

  2. 如果你需要在[0,1]间隔内进行标准化,你必须做什么,除了将3个yelded band值中的每一个划分为3之间的最大值

  3. 按Shift< = BufferLength并再次启动的Shift值弹出缓冲区队列

  4. 来自FFT alg的系数数等于BufferLength(这是离散傅里叶变换定义)因此,当您选择长缓冲区时,频率分辨率会更好,但程序会变慢。在BufferLength音频帧之后,光强度不会变化,在Shift音频帧之后的buf ......以及高比率beetwen BufferLength会让你慢慢变化....所以你必须选择符合你需求的参数,记住你有打开&一些光......让你的阿尔格快速和低保真!

    最后要做的是从你的调音台的eq旋钮发现freqeuncy乐队......我不记得这些信息是否在混音器手册上