BaseAudioContext: createWaveShaper() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

createWaveShaper()BaseAudioContext インターフェイスのメソッドで、 WaveShaperNode を生成します。これは非線形な歪みを表現します。オーディオに歪み効果を適用するために使用されます。

メモ: WaveShaperNode() コンストラクターは WaveShaperNode を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文

js
createWaveShaper()

引数

なし。

返値

WaveShaperNode です。

以下の例では、 AudioContext を使用して波形整形ノードを作成する基本的な使い方を示しています。 もっと完全な応用例や情報については、 Voice-change-O-maticデモを参照してください(関連コードは app.js の 108-193 行目を参照してください)。

メモ: シグモイド関数は、その自然な特性から、歪みカーブとしてよく使われます。例えば、その 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";

仕様書

Specification
Web Audio API
# dom-baseaudiocontext-createwaveshaper

ブラウザーの互換性

BCD tables only load in the browser

関連情報