newAudioClipによるJavaアプリケーションのMIDI/WAVE再生

従来、Javaでサウンドを再生する時は、サウンドファイルを指定してAudioClipを作成し、playメソッドを呼び出していました。ただ、AudioClipで再生できるのはau形式のサウンドのみ、しかもAudioClipの作成はアプレット内でしか行えない、という制限のためあまり使える機能とはいえなかったような気がします。
ところが、Java2ではアプリケーションでもAppletstaticメンバメソッドnewAudioClip()を利用してAudioClipを作成できるようになりました。しかも、MIDIWAVEも再生可能なAudioClipに出来るようです。今回は、この機能を利用してアプリケーションクラスと同じディレクトリにあるMIDIWAVファイルを再生してみましょう。

AudioClipとファイルのURL

 アプリケーションでAudioクリップを作るにはAppletクラスのstaticメソッドnewAudioClip()を使います。このnewAudioClip()は、staticメソッドですのでアプレットを作らなくてもクラス名を介してアクセスできます。例えば、

  AudioClip ac=java.applet.Applet.newAudioClip(url);

 とすれば、urlからファイルを読み込んでAudioClipを作成できるわけです。ただ、問題はファイル名ではなくURLオブジェクトでAudioClipに読み込むファイルを指定しなければならない、という点ですね。ファイル名を渡してもエラーになってしまうので、アプリケーションのclassクラスにあるgetResource()を利用してurlを取得します。このメソッドにファイル名を指定するとファイルのURLを取得できるので、それを使いましょう。これで、例えばアプリケーションと同じディレクトリにあるtest.midAudioClipに読み込むなら、

  ac=java.applet.Applet.newAudioClip(jmidi.class.getResource("test.mid"));

 とすれば良い事になります。AudioClipができたら、後はそのAudioClipに対してplaystoploopなどの操作が可能です。

プログラム

 アプリケーションを実行してplayボタンをクリックするとファイル選択ダイアログが出てくるので、アプリケーションと同じディレクトリのWAVMIDファイルを選んでください。AudioClipが作られ、play()メソッドで再生されます。

プログラムソース表示


プログラミング資料庫 > Javaプログラミング研究室