人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

基本的な方法

Javaで音を鳴らすための基本的な方法です。音の再生、停止、ループくらいはできます。もっと細かく制御したい場合はJava Sound APIを使う必要があります。

Java Appletで音を鳴らす

もっとも古い方法。play()を呼び出すたびにファイルをロードして再生します。

import java.applet.Applet;
import java.awt.Graphics;

public class SimpleSoundApplet extends Applet {
    public void init() {
        play(getCodeBase(), "elise.mid");
    }

    public void paint(Graphics g) {
        g.drawString("Appletで音を鳴らす基本", 16, 16);
    }
}

JDK 1.2では、WAV、AU、AIFF、MIDI、RMF形式のファイルに対応している。8bitまたは16bit、モノラルまたはステレオ、サンプルレートは8000〜48000Hzのファイルが再生可。

AudioClipを使う

Java AppletでAudioClipを使って鳴らします。loop()で再生がループします。ページを移動するとstop()が呼ばれて演奏が停止します。昔のアプレットはよくこういう風に書いてました。

import java.applet.AudioClip;
import java.awt.Graphics;
import javax.swing.JApplet;

public class AudioClipSample extends JApplet {
    private AudioClip clip;

    public void init() {
        clip = getAudioClip(getCodeBase(), "elise.mid");
    }

    public void paint(Graphics g) {
        g.drawString("AudioClipを使う", 16, 16);
    }

    public void start() {
        clip.loop();
    }

    public void stop() {
        clip.stop();
    }
}

アプリケーションでAudioClipを使う

アプリケーションでAudioClipを使うにはAppletクラスのnewAudioClip()を使います。newAudioClip()はクラスメソッドでAppletオブジェクトがいらないためアプリケーションでも使えます。WAVEの再生(2004/10/3)を参照。

audioclip_app.jar

import java.applet.Applet;
import java.applet.AudioClip;
import javax.swing.JFrame;

public class AudioClipApp extends JFrame {
    public AudioClipApp(String filename) {
        setTitle("AudioClipの再生");

        AudioClip clip = Applet.newAudioClip(
            getClass().getResource(filename));
        clip.play();
    }

    public static void main(String[] args) {
        AudioClipApp app = new AudioClipApp("elise.mid");
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setVisible(true);
    }
}