ConvolverNode

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

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

EventTarget AudioNode ConvolverNode
输入数量 1
输出数量 1
通道计数模式 "clamped-max"
声道数 124
通道解释 “speakers”

构造函数

ConvolverNode()

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

实例属性

继承自其父级 AudioNode 的属性.

ConvolverNode.buffer

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

ConvolverNode.normalize

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

实例方法

无特定方法;继承自其父级 AudioNode 的方法.

示例

以下示例显示了 AudioContext 的基本用法,用于创建一个 convolver 节点。您需要找到一个脉冲响应来完成下面的示例。有关完整的应用示例,请参阅我们的 HolySpaceCow 示例。

js
let audioCtx = new window.AudioContext();

async function createReverb() {
  let convolver = audioCtx.createConvolver();

  // load impulse response from file
  let response = await fetch("path/to/impulse-response.wav");
  let arraybuffer = await response.arrayBuffer();
  convolver.buffer = await audioCtx.decodeAudioData(arraybuffer);

  return convolver;
}

// …

let reverb = await createReverb();

// someOtherAudioNode -> reverb -> destination
someOtherAudioNode.connect(reverb);
reverb.connect(audioCtx.destination);

规范

规范
Web Audio API
# ConvolverNode

浏览器兼容性

另见