2

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);

周波数と振幅のデータを取得できますか?

4

1 に答える 1

2

computeSpectrum ()のドキュメントをよく見ると、2 番目のパラメーターが FFT モードを設定していることがわかります。

FFT は FastFourierTransform の略です。基本的に、波形に対して FFT を使用すると、周波数ドメインに移動します。つまり、生の値ではなく、周波数によってソートされた値が得られます。

コードを変更する必要があるのは次のとおりです。

SoundMixer.computeSpectrum(_testbytes, true);

_testbytes には 512 個の値があり、左チャネルは 256、右チャネルは 256 です。各チャネルの数値は、低から高 (低、中低、中高、高だと思います) の周波数で並べ替えられます。

以上で、周波数を取得できました。SoundTransform には音量があります。これは、私が推測する振幅の別の言い方です。これらの周波数の一部または leftPeak と rightPeak で Math.max() を実行したい場合は、それを実行してください。

これについて詳しく知りたい場合は、Wikipedia または DSP (デジタル信号処理) またはサウンド処理で FFT を検索するだけです。それ以外の場合は、computeSpectrum の as3 ドキュメントで十分です。

サンプルレートに関しては、このクールなライブラリがあなたのために大変な仕事をしてくれるようです。

HTH、ジョージ

于 2009-11-27T01:33:13.847 に答える