BaseAudioContext:createWaveShaper() 方法

Baseline 已廣泛支援

此特性已得到良好支援,可在多種裝置和瀏覽器版本上使用。自 2021 年 4 月起,所有瀏覽器均已支援此特性。

BaseAudioContext 介面的 createWaveShaper() 方法建立一個 WaveShaperNode,它代表一種非線性失真。它用於將失真效果應用於您的音訊。

注意: WaveShaperNode() 建構函式是建立 WaveShaperNode 的推薦方法;請參閱 建立 AudioNode

語法

js
createWaveShaper()

引數

無。

返回值

一個 WaveShaperNode

示例

下面的示例展示了 AudioContext 建立 wave shaper 節點的 P基本用法。有關更完整、更實際的示例/資訊,請檢視我們的 Voice-change-O-matic 演示(相關程式碼請參閱 app.js)。

注意: 訊號函式(Sigmoid functions)因其固有的特性而常用於失真曲線。例如,它們的 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

瀏覽器相容性

另見