Звук Java — как динамически регулировать высоту звукаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Звук Java — как динамически регулировать высоту звука

Сообщение Anonymous »

Я пытаюсь создать простую игру с шумом двигателя, который увеличивается и уменьшается, когда игрок ускоряется/замедляется.

Из сообщений на 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-файлов с разными длинами волн, но это не даст плавного перехода.

Буду признателен за любую помощь/ссылки.
РЕДАКТИРОВАТЬ

Вопрос не конкретно в создании шума двигателя, а в методе makeEngineNote() достаточно для моих нужд. Вопрос в том, чтобы настроить высоту тона без генерации каждый раз wav.

Подробнее здесь: https://stackoverflow.com/questions/479 ... ound-pitch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»