WAV を鳴らす

Clip を使って WAV を鳴らす簡単なプログラムです。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして SoundClip.java の名前で保存して下さい。
    // Clip を使って WAV を鳴らす
    import java.io.File;
    import java.io.IOException;
    import javax.sound.sampled.*;
    
    public class SoundClip
    {
        public static void main(String[] args)
        {
            Clip clip = null;
            int count = 5;      // (count+1)回 再生する
            AudioInputStream audioInputStream;
            try
            {   File soundFile = new File("C:\\WINDOWS\\Media\\notify.wav");
                audioInputStream = AudioSystem.getAudioInputStream(soundFile);
                AudioFormat audioFormat = audioInputStream.getFormat();
                DataLine.Info info = new DataLine.Info(Clip.class, audioFormat);
                clip = (Clip)AudioSystem.getLine(info);
                clip.open(audioInputStream);
                clip.loop(count);
            }
            catch (UnsupportedAudioFileException e)
            {   e.printStackTrace();  }
            catch (IOException e)
            {   e.printStackTrace();  }
            catch (LineUnavailableException e)
            {   e.printStackTrace();  }
    
            // 10秒経過したら終了する
            try
            {   Thread.sleep(10000);  }
            catch (InterruptedException e)
            {  }
            clip.stop();
            System.exit(0);
        }
    }
    
  2. Windows のシステムフォルダーに格納されている "notify.wav" を鳴らします。
    "C:\WINDOWS\Media\notify.wav" が存在することを確認して下さい。
    java のソースファイルをコンパイルして class オブジェクトを実行して下さい。
    プログラムを起動してから10秒経過したら終了します。
    その間に "notify.wav" が6回(count+1) 鳴らされます。

プログラムの説明

  1. このプログラムはコンソールモードで作成されています。
    java.io.File, java.io.IOException, javax.sound.* をインポートして下さい。
        import java.io.File;
        import java.io.IOException;
        import javax.sound.sampled.*;
        public class SoundClip
        {
        
  2. clip は Sound を設定する領域です。
    count は鳴らす回数で、count+1 回鳴らします。
    AudioInputStream は WAV を入力する Object です。
        public static void main(String[] args)
        {
            Clip clip = null;
            int count = 5;      // (count+1)回 再生する
            AudioInputStream audioInputStream;
        
  3. try, catch で "notify.wav" をロードします。
    AudioInputStream に File を割り当てます。
    AudioFormat を設定します。
    DataLine.Info をインスタンス化して Clip に Sound を設定します。
    Clip をオープンして clip.loop(count) で演奏を開始します。
            try
            {   File soundFile = new File("C:\\WINDOWS\\Media\\notify.wav");
                audioInputStream = AudioSystem.getAudioInputStream(soundFile);
                AudioFormat audioFormat = audioInputStream.getFormat();
                DataLine.Info info = new DataLine.Info(Clip.class, audioFormat);
                clip = (Clip)AudioSystem.getLine(info);
                clip.open(audioInputStream);
                clip.loop(count);
            }
            catch (UnsupportedAudioFileException e)
            {   e.printStackTrace();  }
            catch (IOException e)
            {   e.printStackTrace();  }
            catch (LineUnavailableException e)
            {   e.printStackTrace();  }
        
  4. 10秒経過したらプログラムを終了します。
            // 10秒経過したら終了する
            try
            {   Thread.sleep(10000);  }
            catch (InterruptedException e)
            {  }
            clip.stop();
            System.exit(0);
        
  5. シューティングゲームの爆発音のように何度も鳴らすときは clip.setFramePosition(0) で巻き戻して clip.start() で鳴らします。
    詳細は「シューティングゲームの爆発音」を参照して下さい。

超初心者のプログラム入門(Java2)