BaseAudioContext:createWaveShaper() 方法

基线 广泛可用

此功能已完善,可在许多设备和浏览器版本上运行。它自以下时间起在各个浏览器中可用: 2021 年 4 月.

BaseAudioContext 接口的 createWaveShaper() 方法创建一个 WaveShaperNode,它表示非线性失真。它用于对音频应用失真效果。

注意:WaveShaperNode() 构造函数是创建 WaveShaperNode 的推荐方法;请参阅 创建 AudioNode

语法

js
createWaveShaper()

参数

无。

返回值

一个 WaveShaperNode

示例

以下示例演示了 AudioContext 创建波形整形节点的基本用法。有关更完整的应用示例/信息,请查看我们的 变声器 演示(有关相关代码,请参阅 app.js 第 108-193 行)。

注意:由于其自然特性,S 型函数通常用于失真曲线。例如,它们的 S 形状有助于创造更柔和的声音效果。我们在 Stack Overflow 上发现了以下失真曲线代码。

js
const audioCtx = new AudioContext();
const distortion = audioCtx.createWaveShaper();

// …

function makeDistortionCurve(amount) {
  const k = typeof amount === "number" ? amount : 50;
  const n_samples = 44100;
  const curve = new Float32Array(n_samples);
  const deg = Math.PI / 180;

  for (let i = 0; i < n_samples; i++) {
    const x = (i * 2) / n_samples - 1;
    curve[i] = ((3 + k) * x * 20 * deg) / (Math.PI + k * Math.abs(x));
  }
  return curve;
}

// …

distortion.curve = makeDistortionCurve(400);
distortion.oversample = "4x";

规范

规范
Web Audio API
# dom-baseaudiocontext-createwaveshaper

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅