ConvolverNode - 对给定的 AudioBuffer 执行线性卷积,通常用于实现混响效果
ConvolverNode
接口是一个 AudioNode
,它对给定的 AudioBuffer
执行线性卷积,通常用于实现混响效果。ConvolverNode
始终只有一个输入和一个输出。
注意:有关线性卷积背后理论的更多信息,请参阅维基百科上的卷积文章。
输入数量 | 1 |
---|---|
输出数量 | 1 |
通道计数模式 | "clamped-max" |
通道数 |
1 ,2 或 4
|
通道解释 | "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 | 未知 |