32

getByteFrequencyData以下に示すように、Web Audio API のメソッドを使用してアナライザー ノードからの FFT データを使用して、スペクトル ビジュアライザーを作成しました。

スペクトラムビジュアライザー

この例では、256 ビンのデータがあります。この数字は正確には何に対応していますか?各周波数成分のデシベルレベルでしょうか。もしそうなら、各ビンの頻度の値が何に対応するかをどうやって知ることができますか?

グラフィック eq の構築を実験できるように知りたいので、フィルター バンドを示すポイントを知りたいです。理想的には、20Hz から 20kHz までの周波数を表し、それに応じてそれらの間の間隔をプロットしたいと思います。

助けてくれてありがとう。

4

3 に答える 3

36

はい、getByteFrequencyData結果は 0 から 255 の間の値の正規化された配列になります (渡された配列にデータをコピーします)。

周波数帯域は均等に分割されるため、配列の各要素 N は次のように対応します。

N * samplerate/fftSize

したがって、最初のビンは 0 です
。サンプルレートが 44100 で a<analyzerNode>.fftSizeが 512 であると仮定すると、2 番目のビンは 86.13 Hz などになります...

dspSOに関する次の 2 つの質問と回答が役に立ちます。

サンプルデータの長さは の半分であり<analyzerNode>.fftSize、事実上周波数範囲をサンプルレートの半分に制限していることに注意してください。

于 2013-02-09T16:12:53.440 に答える
6

256 個のビンの場合、各ビンは最大 86 Hz 離れます (44100 kHz のサンプル レート / fftSize、ここで、fftSize はビンの数の 2 倍です)。つまり、ゼロから開始し、そこから 86 Hz ずつ増加します。

ビン内の実際の値は、信号内に各周波数がどれだけ存在するか (つまり、周波数がどれだけ「大きい」か) を表すだけです。

于 2013-02-09T16:11:23.127 に答える