Wavファイルの演奏
Total: 18618
, Today: 1
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
AudioSystem
を使って、AudioInputStream
、Clip
(Line
)などを作成取得し、wav
ファイルを演奏します。
Screenshot
Advertisement
サンプルコード
URL url = getClass().getResource("notice1.wav");
try (AudioInputStream sound = AudioSystem.getAudioInputStream(url);
Clip clip = (Clip) AudioSystem.getLine(new DataLine.Info(Clip.class, sound.getFormat()))) {
SecondaryLoop loop = Toolkit.getDefaultToolkit().getSystemEventQueue().createSecondaryLoop();
clip.addLineListener(e -> {
LineEvent.Type t = e.getType();
if (Objects.equals(t, LineEvent.Type.STOP) || Objects.equals(t, LineEvent.Type.CLOSE)) {
loop.exit();
}
});
clip.open(sound);
clip.start();
loop.enter();
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException ex) {
ex.printStackTrace();
Toolkit.getDefaultToolkit().beep();
}
View in GitHub: Java, Kotlin解説
AudioSystem
を使用すれば、WAVE
、AU
、AIFF
、SND
形式のサウンドファイルが演奏可能です。
AudioInputStream
やClip
をAutoCloseable
で自動的に開放するためtry-with-resources
ブロックで作成- 演奏開始後に
SecondaryLoop
で現在のスレッドをブロックし新しいセカンダリイベントループで演奏を継続 - 演奏終了イベントを
LineListener
で受け取るとセカンダリイベントループを終了して現在のスレッドに戻りclose()
が自動的に実行される
参考リンク
- AudioSystem (Java Platform SE 8)
"taitai studio" フリーWav素材集上記のサイトのサイトが移転しているようなので、別の素材を探す予定wav
ファイルをサンプルとして利用しています。
- MIDIファイルの演奏
- Beep音を鳴らす
- AuditoryCuesでイベント音を設定する