WEB AUDIO API создает шумы от дождя - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь создать дождь в javascript Web Audio API. До сих пор я создавал низкочастотный шум для фона, и я работаю над высокочастотным шумом, который будет имитировать звук капель дождя. Однако сейчас высокочастотный шум очень похож на белый шум и слишком интенсивен, чтобы быть отдельными каплями. Кто-нибудь знает, как немного «отделить» звук, чтобы он звучал почти как треск. Здесь - это ссылка на то, что я хотел бы, чтобы высокочастотный шум звучал, если вы увеличите последний слайдер (фиолетовый), вы можете его услышать.

А вот мой HTML код до сих пор

<script>
let context= new AudioContext();
let context2= new AudioContext();

let lowpass = context.createBiquadFilter();
  lowpass.type = 'lowpass';
  //lowpass.Q.value = -7.01;
  lowpass.frequency.setValueAtTime(80, context2.currentTime);

let gain = new GainNode(context);
  gain.gain.value= 0.4;

let gain2 = new GainNode(context2);
  gain2.gain.value= 0.02;

let highpass=context2.createBiquadFilter();
  highpass.type = 'highpass';
  highpass.Q.value = 2;
  //highpass.frequency.setValueAtTime(6000, context2.currentTime);

let distortion = context2.createWaveShaper();

let delay = context2.createDelay(90.0);




function StartAudio() {context.resume()};
context.audioWorklet.addModule('basicnoise.js').then(() => {
  let myNoise = new AudioWorkletNode(context,'noise-generator');

  myNoise.connect(lowpass);
  lowpass.connect(gain);
  gain.connect(context.destination);
});

function StartAudio2() {context2.resume()};
context2.audioWorklet.addModule('basicnoise.js').then(() => {
  let myNoise2 = new AudioWorkletNode(context2,'noise-generator');

  myNoise2.connect(highpass);
  highpass.connect(gain2);
  gain2.connect(delay);
  delay.connect(context2.destination);
});

Я играл с различными функциями, некоторые из них мало что сделали, или я просто не правильно их использую, так как я очень плохо знаком с сцена аудио API. Любая помощь приветствуется, так как это для школьного проекта, и я знаю, что некоторые другие ученики хотят издавать звуки огня и могут также извлечь выгоду из потрескивающего шума !! Спасибо !!

1 Ответ

0 голосов
/ 28 апреля 2020

Если вы думаете о дожде как о физическом процессе, это в основном много звуков поверхностного удара (и, возможно, некоторая дополнительная атмосфера, создаваемая потоком воздуха). Когда достаточное количество капель дождя ударяется о поверхность (и) достаточно быстро, в результате получается шум-i sh.

Я думаю, что реалистичный c генератор дождя имитирует множество одиночных капель, ударяющихся о поверхность на разных расстояниях от слушателя (что вызывает затухание и фильтрацию).

Тем не менее, если вы хотите чтобы просто «потрескивать» генератор шума, который вы сейчас используете, попробуйте случайным образом модулировать значение усиления узла усиления; здесь, есть 25% шанс, что генератор будет эффективно приглушен каждые 20 миллисекунд (или около того, учитывая, что таймеры не совсем точны).

setInterval(() => {
  gain.gain.value=(Math.random() < 0.75 ? 0.4 : 0);
}, 20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...