SoundMixer.computeSpectrum の FFT モードの周波数帯


こんばんわ。さくーしゃです。生きてますよ。まともにブログを書くのは1ヶ月ぶりですねぇ。いやーなんか8月前半は忙しまくりで後半はなんかやる気なくってみたいな。まあ、そんなこんなで最近は AS3 の仕事とかやってたりします。Flex + Cairngorm + Papervision3D みたいな。

今日はちょっと知りたいことがあったので作ってみました。といっても中途半端なのだけど目的はほぼ達成しちゃったのでもういいやってことで作ったやつだけ置いておきましょう。

知りたかったのは SoundMixer の computeSpectrum っていうメソッドの FFT モードんときに得られる値って、いったいいくつからいくつまでの周波数なんだろかってことでね。ビジュアライザーとかを作るだけならなんとなく値を使うだけでかっちょよくできるんだけど、もうちょっと解析よりのことをしようとするとそのへん知りたいのですね。

まあ結論からいうと返ってくる ByteArray の値、256 個の値はおそらく 0 〜 11008Hz。43Hz 単位で 256 バンド。おそらくになっちゃってるところがが中途半端なところで、なんとなく見た目で判断w。(んやまあ 44100Hz あたりから見当つけたけど。)

2008090201←作ったのはこれ。下のスライダーで周波数が変わる。んでそれのスペクトルが出る。リアルタイムの音声ジェネレートは popforge のアレを使ってます。っていうかサンプルの CreateAStream そのままだな。ソースはこつら。(コンパイルするなら popforge のんは別途入手してくださいな)

サイン波を FFT するとその周波数のとこにライン1本、じゃなくってあんな形になるのな、知らんかった。(なんかの誤差が影響してたりするんだろうか。。)
※実験とは関係ないけど矩形波バージョンも作ってみた