Flash 如何计算频率&;使用闪存播放器9时闪存AS3中的振幅

Flash 如何计算频率&;使用闪存播放器9时闪存AS3中的振幅,flash,actionscript-3,frequency,amplitude,Flash,Actionscript 3,Frequency,Amplitude,如何使用FP9计算As3中的频率和振幅。我使用了所有原始字节 SoundMixer.computeSpectrum(_testbytes, false, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x6600CC); g.moveTo(0, PLOT_HEIGHT); var m:Number = 0; for (var i:int = 0; i < 256; i++

如何使用FP9计算As3中的频率和振幅。我使用了所有原始字节

SoundMixer.computeSpectrum(_testbytes, false, 0);
var g:Graphics = this.graphics;  
g.clear();       
g.lineStyle(0, 0x6600CC);
g.moveTo(0, PLOT_HEIGHT);            
var m:Number = 0;
for (var i:int = 0; i < 256; i++) {
    m = (_testbytes.readFloat() * 100);
    g.lineTo(i*2 , 100 - m);
}
g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
SoundMixer.computeSpectrum(_testbytes,false,0);
var g:Graphics=this.Graphics;
g、 清除();
g、 线型(0,0x6600CC);
g、 移动到(0,绘图高度);
变量m:数值=0;
对于(变量i:int=0;i<256;i++){
m=(_testbytes.readFloat()*100);
g、 线路图(i*2100米);
}
g、 lineTo(通道长度*2,绘图高度);

现在我可以从中获得频率和振幅数据了吗

如果您仔细查看文档,您将看到 第二个参数设置FFT模式

FFT代表FastFourierTransform,基本上,如果对进入频域的波形使用FFT,这意味着不是原始值,而是按频率排序的值

您只需在代码中更改以下内容:

SoundMixer.computeSpectrum(_testbytes, true);
现在在_testbytes中,您将有512个值,256个值用于左通道,256个值用于右通道。对于每个频道,数字按频率排序,从低到高(我想是低、中低、中高、高)

就这些,你现在有了频率。SoundTransform有音量,我想这是表示振幅的另一种方式。如果您想对其中一些频率或leftPeak和rightPeak进行Math.max()计算,请尝试

如果你想在这方面做得很好,只需在wikipedia或DSP(数字信号处理)或声音处理上查找FFT,否则,computeSpectrum的as3文档就足够了

至于采样率,似乎为您做了艰苦的工作

嗯,,
乔治

嗨,乔治,谢谢你给我指路。在振幅方面,我试图计算声道的峰值,这是错误的吗?另一件事是如何获得任何mp3声音文件的采样率?再次感谢。坦莫伊