5.6 拙作 MakeWaveFile.java -- 数値データからWaveファイルを作る

http://nalab.mind.meiji.ac.jp/~mk/program/sound/MakeWaveFile.java


   1 /*
   2  * MakeWaveFile.java
   3  *   version 1 (2008/3/5) by mk
   4  *   参考: http://okwave.jp/qa1942478.html
   5 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/sound/sampled/AudioSystem.html
   6  */
   7 
   8 import java.io.IOException;
   9 import java.io.File;
  10 import java.io.InputStream;
  11 import java.io.ByteArrayInputStream;
  12 import javax.sound.sampled.*;
  13 
  14 public class MakeWaveFile {
  15     public static void main(String[] args) throws IOException {
  16         // 音のPCMデータ (44.1kHz, 量子化ビット数16, ステレオ, 3秒)
  17         byte[] data = new byte[44100 * 2 * 2 * 3];
  18         // 適当なデータ (良い子は自分が考えるデータに変えてみよう)
  19         for (int i = 0; i < data.length; i++) {
  20             data[i] = (byte) (((i & (1 << 6)) == 0) ? -18 : 18);
  21         }
  22         // オーディオフォーマットを決める (44.1kHz, 16bit, stereo)
  23         AudioFormat audioFormat =
  24             new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 
  25                             44100.0F, 16, 2, 4, 44100.0F, false);
  26         // ByteArrayInputStream を AudioInputStream にする
  27         InputStream in = new ByteArrayInputStream(data);
  28         AudioInputStream ais = new AudioInputStream(in,
  29                                                     audioFormat,
  30                                                     44100 * 2 * 2);
  31         // オーディオファイルの種類を指定
  32         AudioFileFormat.Type targetType = AudioFileFormat.Type.WAVE;
  33         // 出力ファイル名
  34         File outputFile = new File("test.wav");
  35         // えいっ、と書く
  36         AudioSystem.write(ais, targetType, outputFile);
  37     }
  38 }

桂田 祐史
2017-10-09