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 }