再生中のオーディオに対して何らかの同期(時間軸)を取りたい場合、ビルトインSoundクラスのプロパティや対応するメソッドを使えばそれほど難しいことではありませんが、オーディオ自身をスペクトラムアナライザーのようにリアルタイムに表現(同期)することはかなり困難です(Flash Player 8まででは・?)。
ただし再生するオーディオの周波数帯域ごとのボリュームデータが時間軸(配列)で用意されていれば左図サンプルのように簡単に表現することができます。
オーディオに連動するVUメータなんかも同じ仕組みですよね。
この面倒な配列データを簡単に作ってくれるソフトウエアがFlashampです(有料)。
オーディオを読み込んで任意の設定をすれば配列データを自動的に書き出してくれるようです(使ってないので・・・)
下記サンプルスクリプトはドキュメントにあった一例ですが何となく今どきじゃないなあ(笑)
//ex. Spectrum data...
//ex. spectrum=[[73, 85, 81, 43, 20], [71, 103, 101, 77, 48], [68, 80, 73, 36, 8], ...];
onClipEvent (load) {
this.faTrack = new Sound();
this.faTrack.attachSound(faFile);
this.faTrack.start();
function setEq () {
for(i=0; i < 5; i++) {
setProperty("_root.bar" + i, _height, ampList[gFrame][i]);
}
}
}
onClipEvent (enterFrame) {
gFrame = Math.floor((this.faTrack.position/1000)*fps);
setEq();
}