Что я пытаюсь изучить/сделать: Как настроить простой рабочий сверток (реверберацию) в мою песочницу кода ниже, используя импульсный отклик. Я думал, что это похоже на настройку фильтра, но все выглядит совсем по-другому.Web Audio Api: Как добавить рабочий сверла?
То, что я пробовал: Как и все новые технологии, все меняется быстро, что затрудняет понимание, какая реализация правильная, а что нет. Я посмотрел на бесчисленные WebAudio Api Convolver Tutorials, многие из них были старыми, а другие работали, но слишком «раздувались», что затрудняло понимание происходящего. Я попытался реализовать некоторые примеры из документации MOZILLA:
я уже имел взгляд на: https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode/buffer
Мой вопрос: Как интегрировать Конвольвер должным образом в контексте ниже? Как вы можете видеть, я пытался, но не могу понять это.
window.addEventListener('load', init, false);
function init() {
setupWebAudio();
}
function setupWebAudio() {
var audio = document.getElementById('music');
var context = new AudioContext();
var source = context.createMediaElementSource(audio);
var filter = context.createBiquadFilter();
var convolver = context.createConvolver();
var inpulseRes = "hall.mp3";
var hallBuffer = inpulseRes;
soundSource = context.createBufferSource();
soundSource.buffer = hallBuffer;
convolver.buffer = hallBuffer;
filter.type = 'lowpass';
filter.frequency.value = 400;
var theParent = document.getElementById("test");
theParent.addEventListener("mousedown", doSomething, false);
function doSomething(e) {
if (e.target !== e.currentTarget) {
if(e.target == theParent.children[0]){
filter.frequency.value += 200;
}
else if(e.target == theParent.children[1]){
filter.frequency.value -= 200;
}
else if(e.target == theParent.children[2]){
filter.type = 'highpass';
}
}
e.stopPropagation();
}
source.connect(filter);
source.connect(convolver);
filter.connect(context.destination);
audio.play();
}
как вы можете дать 150 репа, если у вас всего 114? – dandavis
@ dandavis хороший вопрос – Asperger