ActionScript3.0では,サウンドの波形情報にアクセスすることもできます。波形情報をムービーの動きのアクセントとして使うと,サウンドと動きのある楽しいムービーを作成できます。サウンド情報を扱うには,バイト配列にアクセスするByteArrayクラスを使用します。

サウンドの波形情報を取得する

 図1のムービーは,Flashムービー内でのサウンドの波形情報を,右チャンネルと左チャンネルに分けて表示しています。MP3プレーヤーなどのサウンドプレーヤーでも,こんな形で音に合わせて,ビジュアルが変化するような仕組みを見たことがある方も多いのではないでしょうか。

図1●波形情報の表示
図1●波形情報の表示
(クリックすると別ウィンドウでムービーを表示します)

 ActionScript3.0では,サウンドの波形情報に,ムービー全体のサウンドをコントロールする,SoundMixerクラスを使ってアクセスできます。また,その際に取り出した波形情報は,バイト配列の形で返されます。このバイト配列からは,ByteArrayクラスを使って,必要な情報を切り出して読み取ることができます。

波形情報を取り出す

 では,さっそく実際に波形情報を取り出してみましょう。Flashムービーのサウンドから,波形情報を取り出すには,「SoundMixer.computeSpectrumメソッド」を使用します。SoundMixerクラスは,ムービー全体のサウンド情報を管理するクラスですので,インスタンスを生成する必要はありませんでしたね。ですので,このメソッドも,クラスメソッドとなっています。

 波形情報を取得する基本構文は以下の通りです。

var bytes:ByteArray = new ByteArray();
SoundMixer.computeSpectrum(bytes);

 SoundMixer.computeSpectrumメソッドは,その時点でのサウンドの波形情報を取り出せるのですが,この戻り値の形式が,「ByteArray型(ByteArrayクラス)」という形式で返ってきます。あらかじめByteArrayクラスのインスタンスを生成しておき,そのインスタンスを引数として,SoundMixer.computeSpectrumメソッドを実行します。すると,そのByteArrayに,サウンドの波形情報が書き込まれる,という仕組みになっています。ちょっと特殊ですね。あとは,この波形情報から,必要な値を読み取って,いろいろな処理に利用していきます。