BaseAudioContext: createWaveShaper()-Methode

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.

Die createWaveShaper()-Methode der BaseAudioContext-Schnittstelle erstellt einen WaveShaperNode, der eine nicht-lineare Verzerrung darstellt. Sie wird verwendet, um Verzerrungseffekte auf Ihr Audio anzuwenden.

Hinweis: Der WaveShaperNode()-Konstruktor ist die empfohlene Methode, um einen WaveShaperNode zu erstellen; siehe Erstellen eines AudioNode.

Syntax

js
createWaveShaper()

Parameter

Keine.

Rückgabewert

Beispiele

Das folgende Beispiel zeigt die grundlegende Verwendung eines AudioContext zur Erstellung eines WaveShaperNode. Für ausführlichere Anwendungsbeispiele und Informationen werfen Sie einen Blick auf unser Voice-change-O-matic-Demo (siehe app.js für relevanten Code).

Hinweis: Sigmoid-Funktionen werden häufig für Verzerrungskurven verwendet aufgrund ihrer natürlichen Eigenschaften. Ihre S-Form trägt beispielsweise dazu bei, ein glatteres Klangresultat zu schaffen. Wir fanden den untenstehenden Code für die Verzerrungskurve auf 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";

Spezifikationen

Specification
Web Audio API
# dom-baseaudiocontext-createwaveshaper

Browser-Kompatibilität

Siehe auch