Web Audio Api: Как добавить работающий конволвер?

Что я пытаюсь узнать / сделать: Как настроить простой рабочий конволвер (ревербератор) в моей песочнице кода ниже, используя импульсный отклик. Я думал, что это похоже на настройку фильтра, но все выглядит совсем иначе.

Что я пробовал: Как и во всех новых технологиях, все меняется быстрыми темпами, что затрудняет определение правильной реализации, а неправильной. Я посмотрел бесчисленные учебники WebAudio Api Convolver, многие из них были старыми, а другие работали, но слишком «раздутые», что затрудняло понимание того, что происходит. Я попытался реализовать некоторые примеры из документации 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();
}

Ответы на вопрос(2)

Ваш ответ на вопрос