Was ich versuche zu lernen/tun: Wie man einen einfachen funktionierenden Convolver (Reverb) in meinem Code-Sandkasten unter Verwendung einer Impulsantwort einrichtet. Ich dachte, es wäre ähnlich, einen Filter zu setzen, aber die Dinge scheinen ganz anders zu sein.Web Audio API: Wie füge ich einen funktionierenden Convolver hinzu?
Was ich versucht habe: Wie bei allen neuen Technologien ändern sich die Dinge in einem schnellen Tempo, was es schwierig macht zu wissen, welche Implementierung korrekt ist und welche nicht. Ich sah mir unzählige WebAudio Api Convolver Tutorials an, viele waren alt und andere arbeiteten, aber viel zu "aufgebläht", was es schwer machte zu verstehen, was vor sich ging. Ich habe versucht, einige der Beispiele aus der mozilla Dokumentation zu implementieren:
Ich hatte schon einen Blick auf: https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode/buffer
Meine Frage: Wie integriere ich einen Convolver richtig im Kontext unten? Wie Sie sehen können, habe ich es versucht, kann es aber nicht herausfinden.
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();
}
Wie können Sie 150 rep vergeben, wenn Sie nur 114 haben? – dandavis
@dandavis gute Frage – Asperger