javascript - 将卷积器混响添加到音频文件
问题描述
对不起,我真的是 Javascript 和网络音频 api 的新手。我正在尝试向音频文件添加混响,可以调节要添加的混响量,但代码不起作用......你能帮帮我吗?提前非常感谢!
所以感谢@Raymond Toy,我在代码中发现了问题。此代码现在有效:
const track1 = audioContext.createMediaElementSource(audioElement1);
const playButton1 = document.getElementById('player1');
const gainNode1 = audioContext.createGain();
var sub1 = document.getElementById("sub1");
var impulseResponseBuffer;
var getSound = new XMLHttpRequest ();
getSound.open("get", "circular.wav", true);
getSound.responseType = "arraybuffer";
getSound.onload = function () {
audioContext.decodeAudioData(getSound.response, function(buffer) {
impulseResponseBuffer = buffer;
});
};
getSound.send();
playButton1.addEventListener('click', function() {
if (audioContext.state === 'suspended') {
audioContext.resume();
}
if (this.dataset.playing === 'false') {
audioElement1.currentTime = 0;
audioElement1.play();
audioElement1.loop = 'true';
this.dataset.playing = 'true';
var convolver = audioContext.createConvolver();
convolver.buffer = impulseResponseBuffer;
track1.connect(convolver);
convolver.connect(gainNode1);
gainNode1.connect(audioContext.destination);
track1.connect(audioContext.destination);
sub1.innerHTML = "Stop";
} else if (this.dataset.playing === 'true') {
audioElement1.pause();
this.dataset.playing = 'false';
sub1.innerHTML = "Play";
}
}, false);
audioElement1.addEventListener('ended', () => {
playButton1.dataset.playing = 'false';
}, false);
const volumeControl1 = document.getElementById('volume1');
volumeControl1.addEventListener('input', function() {
gainNode1.gain.value = this.value;
}, false);""
解决方案
首先,您确实需要描述它不起作用的方式。没有声音吗?声音不是你所期望的?开发者控制台中的错误消息?
其次,考虑查看模块化路由中的图 2 和示例 2 。那里有很多无关的东西,但我认为您想要的是两个增益节点:干增益和湿增益,其中干增益用于您正在播放的音频(未修改),湿增益用于输出卷积器。您可以调整增益以控制最终输出中有多少卷积器效果。
推荐阅读
- javascript - 如何从变量中获取值,该变量在 JS 中具有另一个作用域?
- wordpress - InspectorControls 中的使用示例 SearchControl
- python - 如何解决函数中的“return”语句问题
- sendmail - 我想获取输入到summernote富文本编辑器中的任何内容,以通过gmail发送电子邮件,但我知道如何
- java - 执行类的新实例 extends AsyncTask 多次
- python - 无法为具有大小的数组分配内存
- flutter - 使用flutter_tex时我的背景是黑色的,如何设置白色背景?
- c# - 在 c# 中引发了“System.OutOfMemoryException”类型的异常(从数据库中检索数据时出现此错误)
- python - Python for .NET:将 byte[] 传递给 C# 函数
- java - 这是joda time中的错误吗?处理非常古老(0000 年)的即时/负纪元