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

瀏覽器相容性

另見