ConvolverNode - 对给定的 AudioBuffer 执行线性卷积,通常用于实现混响效果

ConvolverNode 接口是一个 AudioNode,它对给定的 AudioBuffer 执行线性卷积,通常用于实现混响效果。ConvolverNode 始终只有一个输入和一个输出。

注意:有关线性卷积背后理论的更多信息,请参阅维基百科上的卷积文章

输入数量 1
输出数量 1
通道计数模式 "clamped-max"
通道数 124
通道解释 "speakers"

构造函数

ConvolverNode()

创建一个新的 ConvolverNode 对象实例。

属性

从其父类 AudioNode 继承了属性。

ConvolverNode.buffer

单声道,立体声或 4 声道 AudioBuffer 包含 ConvolverNode 用于创建混响效果的(可能是多声道)脉冲响应。

ConvolverNode.normalize

一个布尔值,用于控制缓冲区的脉冲响应是否会在设置 buffer 属性时通过等功率归一化进行缩放。

方法

没有特有的方法; 所有方法继承自父类 AudioNode

ConvolverNode 实例

以下示例显示了用于创建卷积器节点的 AudioContext 的基本用法。

注意:您需要找到一个脉冲响应才能完成下面的示例。有关应用示例,请参阅该Codepen

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var reverb = audioCtx.createConvolver();
// ...

function base64ToArrayBuffer(base64) {
    var binaryString = window.atob(base64);
    var len = binaryString.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++)        {
        bytes[i] = binaryString.charCodeAt(i);
    }
    return bytes.buffer;
}

// ...

var reverbSoundArrayBuffer = base64ToArrayBuffer(impulseResponse);
audioCtx.decodeAudioData(reverbSoundArrayBuffer, function(buffer) {
  reverb.buffer = buffer;
},
function(e) {
  alert('Error when decoding audio data ' + e.err);
})

规范

规范 状态 备注
Web Audio API
ConvolverNode 的定义
工作草案 -

桌面浏览器兼容性

特性 Chrome Edge Firefox Internet Explorer Opera Safari
基础支持 14 支持 25 不支持 15 6
ConvolverNode() constructor 55 未知 53 不支持 42 未知
buffer 14 12 25 不支持 15 6
normalize 14 12 25 不支持 15 6

移动浏览器兼容性

特性 Android Chrome for Android Edge mobile Firefox for Android IE mobile Opera Android iOS Safari
基础支持 14 14 支持 26 未知 15 未知
ConvolverNode() constructor 55 55 未知 53 未知 42 未知
buffer 14 14 支持 26 未知 15 未知
normalize 14 14 支持 26 未知 15 未知

相关链接