| title | BaseAudioContext: createWaveShaper()-Methode | ||
|---|---|---|---|
| short-title | createWaveShaper() | ||
| slug | Web/API/BaseAudioContext/createWaveShaper | ||
| l10n |
|
{{ APIRef("Web Audio API") }}
Die createWaveShaper()-Methode des BaseAudioContext-Interfaces erstellt einen WaveShaperNode, der eine nicht-lineare Verzerrung darstellt. Sie wird verwendet, um Verzerrungseffekte auf Ihren Audioinhalten anzuwenden.
Note
Der WaveShaperNode()-Konstruktor ist die empfohlene Methode, um einen WaveShaperNode zu erstellen; siehe Erstellen eines AudioNode.
createWaveShaper()
Keine.
Ein WaveShaperNode.
Das folgende Beispiel zeigt die grundlegende Verwendung eines AudioContext, um einen Wave Shaper Node zu erstellen. Für vollständigere angewendete Beispiele/Informationen sehen Sie sich unser Voice-change-O-matic-Demo an (siehe app.js für den relevanten Code).
Note
Sigmoid-Funktionen werden häufig für Verzerrungskurven verwendet aufgrund ihrer natürlichen Eigenschaften. Ihr S-förmiges Profil hilft beispielsweise, ein smootheres Klangresultat zu erzeugen. Wir fanden den untenstehenden Verzerrungskurven-Code auf Stack Overflow.
const audioCtx = new AudioContext();
const distortion = audioCtx.createWaveShaper();
// …
function makeDistortionCurve(amount) {
const k = typeof amount === "number" ? amount : 50;
const numSamples = 44100;
const curve = new Float32Array(numSamples);
const deg = Math.PI / 180;
for (let i = 0; i < numSamples; i++) {
const x = (i * 2) / numSamples - 1;
curve[i] = ((3 + k) * x * 20 * deg) / (Math.PI + k * Math.abs(x));
}
return curve;
}
// …
distortion.curve = makeDistortionCurve(400);
distortion.oversample = "4x";{{Specifications}}
{{Compat}}