soundMixerによるサウンドの視覚化

サウンドの視覚化の勉強の一環として「SoundMixer」を使用してみた。

サウンドのボリュームやパンで使用する「SoundChannel」にも「leftpeak」「rightpeak」もどうやら音のデータの振幅を取得できるようだけども、細かいデータでたくさんのMovieclipに割り当てる場合は、「ByteArray」のほうが良さそうなので試してみました。

SoundMixierによる視覚化

soundmixier

サウンドの読み込みなどは省略します。

ENTER_FRAME内で再生データを取得するByteArrayオブジェクトを作成

まずはBytesArrayデータをEnterFrame内で宣言してサウンドを逐一バイトデータで取得するためのインスタンスを作成する

ENTER_FRAME内でサウンドをコントロールするSoundMixier.computeSpectrumメソッドを実行する

SoundMixierの引数は

  • 第一引数にSoundMixer.computeSpectrumの第1引数にByteArray Objectを渡すとその瞬間のサウンドキャプチャが渡したByteArray Objectに保存される
  • 第二引数はフーリエ変換するかどうかを真偽値で指定する(詳しくは分からないです)
  • 第三引数にサンプリング解像度で「0」が44.1kHz 「1」が22.05kHz 「2」が11.025となる 「0」が一番良い??高い??解像度ってこと?

ちなみに返されるデータは左の音「256」,右の音「256」を連結した「512」となる

bytesArray readFloatによる波形データを取り出し

readFloatメソッドによる戻り値はNubmer形のデータになる

取り出したデータをMovieClipに割り当てる場合など取り出したデータだと小さすぎるので調整Math.max()メソッドで大きい方を取得する(上記の例だと一番小さくても0.1の数値)

後は調整した数値をMovieClipのscale値に割り当てるなど

サウンドに関する処理について詳しく書かれているブログを発見したのでリンクしておきます

White Wheelsのメモ AS3覚え書き

今回作成したプログラム