ConvolverNode: buffer 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

ConvolverNode 介面的 buffer 屬性表示一個單聲道、立體聲或 4 聲道的 AudioBuffer,其中包含用於 ConvolverNode 建立混響效果的(可能多通道的)脈衝響應。

這通常是對您想要建模的空間中儘可能接近脈衝的簡單錄音。例如,如果您想模擬浴室的混響,您可以在門附近設定一個麥克風來錄製一個氣球爆炸聲或水槽發出的合成脈衝的聲音。然後可以使用該音訊錄音作為 buffer。

此音訊 buffer 的取樣率必須與 AudioContext 的取樣率相同,否則將丟擲異常。設定此屬性時,buffer 和該屬性的狀態將用於使用給定的歸一化配置 ConvolverNode 的脈衝響應。此屬性的初始值為 null

一個 AudioBuffer

示例

分配音訊 buffer

以下示例建立了一個卷積節點併為其分配了一個 AudioBuffer

有關更完整、更實際的應用示例/資訊,請檢視我們的 Voice-change-O-matic 演示(有關下面摘錄的程式碼,請參閱 app.js)。

js
const audioCtx = new AudioContext();
// …

const convolver = audioCtx.createConvolver();
// …

// Grab audio track via fetch() for convolver node
try {
  const response = await fetch(
    "https://mdn.github.io/voice-change-o-matic/audio/concert-crowd.ogg",
  );
  const arrayBuffer = await response.arrayBuffer();
  const decodedAudio = await audioCtx.decodeAudioData(arrayBuffer);
  convolver.buffer = decodedAudio;
} catch (error) {
  console.error(
    `Unable to fetch the audio file: ${name} Error: ${err.message}`,
  );
}

規範

規範
Web Audio API
# dom-convolvernode-buffer

瀏覽器相容性

另見