Javaでサウンドを生成しようとしています。最後に、私はサウンドカードにサウンドを継続的に送ろうとしていますが、今のところ私はユニークなサウンドウェーブを送ることができます。javax.sound.sampledでサウンドを生成する
私はシンプルな正弦波を表す44100符号付き整数で配列を埋めましたが、それをサウンドカードに送信したいのですが、動作させることができません。
int samples = 44100; // 44100 samples/s
int[] data = new int[samples];
// Generate all samples
for (int i=0; i<samples; ++i)
{
data[i] = (int) (Math.sin((double)i/(double)samples*2*Math.PI)*(Integer.MAX_VALUE/2));
}
は、私は使用して音のラインに送っ:
AudioFormat format = new AudioFormat(Encoding.PCM_SIGNED, 44100, 16, 1, 1, 44100, false);
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = new AudioInputStream(ais,format,44100);
clip.open(inputStream);
clip.start();
私の問題は、コードスニペットにこれらの間に存在します。 int[]
を入力ストリームに変換する方法が見つかりません。あなたのAudioFormat
は、16ビットのサンプルを指定しているため
short[] data = new short[samples];
:
素晴らしいです。私の一日を保存:) – NewbiZ