私は、プレーヤーの加速/減速時に上下するエンジンノイズを使って単純なゲームを作ろうとしています。Javaサウンド - 音の高さを動的に調整する方法
SO私はこの小さな例を持っているのポストから...
public static final int SAMPLE_RATE = 16 * 1024; // ~16KHz
public void playNoise() throws Exception {
final AudioFormat af = new AudioFormat(Note.SAMPLE_RATE, 8, 1, true, true);
SourceDataLine line = AudioSystem.getSourceDataLine(af);
line.open(af, SAMPLE_RATE);
line.start();
byte[] engineNote = makeEngineNote();
line.write(engineNote, 0, engineNote.length);
line.drain();
line.close();
}
private byte[] makeEngineNote() {
// Create a kind-of-sin-wave-with-interference
byte[] b = new byte[SAMPLE_RATE];
...
}
今、私はピッチを作りたいが、加速/減速を模倣するために変動します。私は上記のコード(write()
)をループするのだろうと思っていましたが、私はその場で波長を変更する方法がわかりません。私は毎回wavを再生成することが最も望ましいアプローチだとは想像できません。私は波長の異なる複数のwavを作成することができましたが、これは滑らかな移行をもたらさないでしょう。
ヘルプ/リンクをいただければ幸いです。
EDIT
質問は、特にエンジン音を立てについて、makeEngineNote()
方法は、私のニーズには十分ではありません。問題は、毎回wavを生成せずにピッチを調整することです。
「エンジン音」は、変調された正弦波以外にも非常に複雑です。あなたは、サウンドサンプルを見つけたり、自分のサウンドサンプルをキャプチャする方が良いでしょう。あなたがそれを生成しなければならない場合は、あなたの前に実験と調整の長い道のりがあります。 –
あなたは鋸波でSF音のエンジン音を出すことができますが、これは単一のStackOverflow答えを書く方法を合理的に説明できるものだとは思いません。 – Radiodef
@ジムガリソン編集をご覧ください。さらに混乱を避けるためにタイトルを変更しました。 – TedTrippin