オーディオデータの取り扱い

オーディオデータを扱う AudioClipクラスと、 オーディオデータを扱う Appletクラスのメソッドについて解説します。
 音声データを再生するのは非常に簡単です。 Appletクラスに用意された play()メソッドを呼び出すだけです。 play()メソッドには音声データのファイルの URL を指定しますが、 そのルールは getImage()の場合と 同じです。

String source = getParameter("source");    // 音声データのソース名
if( source != null )
    play( getDocumentBase(),  source );
else
    play( getCodeBase(),  "default.au" );

play()メソッドの処理は独立したスレッドによって、 アプレットの他の処理と並列して行われます。 プログラム内で特別な工夫を行わなくても、自動的にバックグラウンドでの 再生が可能になるわけです。 マシンの処理能力が許せば、複数の play()メソッドが独立して音声の 再生を行うことも可能です。

 今度は単純に再生するのではなく、BGM としてエンドレスに流す機能を考えます。 Appletパッケージの中の AudioClipクラスのオブジェクトが必要です。 そのために Appletクラスのメソッド getAudioClip()を用います。 データファイルの URL を指定して AudioClip のオブジェクトを得る方法は、 getImage() や play()と同じルールです。


public AudioClip clip = null;
String source = getParameter("source");  // 音声データのソース名
if( source != null )
    clip = getAudioClip( getDocumentBase(),  source );
else
    clip = getAudioClip( getCodeBase(),  "default.au" );

 AudioClip は3つのメソッド play(), loop(), stop() を提供します。 それぞれ、単純な再生、エンドレスの再生、再生の中断の処理を行います。 たとえば、ページを開いたら BGMの再生をエンドレスで開始するためには、次のように start()メソッドの 中で、AudioClipの loop()メソッドを呼べばいいわけです。


public void start() {

       clip.loop();   // エンドレスの再生の開始
} 

逆にブラウザの表示が別のページに移った場合は、 後始末のために stop()メソッドの中で AudioClip の stop()メソッドを呼びます。 (こうしておかないと、 BGMが延々と演奏され続けることになってしまいます。)

public void stop() {

       clip.stop();  // 再生の終了
}