OscillatorNode: setPeriodicWave()-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 setPeriodicWave()-Methode der OscillatorNode-Schnittstelle wird verwendet, um auf eine PeriodicWave zu verweisen. Diese definiert eine periodische Wellenform, die genutzt werden kann, um die Ausgabe des Oszillators zu formen, wenn type auf custom gesetzt ist.

Syntax

js
setPeriodicWave(wave)

Parameter

wave

Ein PeriodicWave-Objekt, das die Wellenform repräsentiert, die als Form der Ausgabe des Oszillators verwendet werden soll.

Rückgabewert

Keiner (undefined).

Beispiele

Das folgende Beispiel zeigt die einfache Verwendung von createPeriodicWave(), um eine Sinuswelle aus einer periodischen Welle neu zu erstellen.

js
const real = new Float32Array(2);
const imag = new Float32Array(2);
const ac = new AudioContext();
const osc = ac.createOscillator();

real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;

const wave = ac.createPeriodicWave(real, imag);

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

osc.start();
osc.stop(2);

Dies funktioniert, weil ein Ton, der nur eine Grundfrequenz enthält, per Definition eine Sinuswelle ist.

Hier erstellen wir eine PeriodicWave mit zwei Werten. Der erste Wert ist der DC-Offset, der den Startwert des Oszillators darstellt. 0 ist hier gut, weil wir die Kurve mittig im Bereich [-1.0; 1.0] beginnen wollen.

Der zweite und die folgenden Werte sind Sinus- und Kosinus-Komponenten. Sie können es sich als Ergebnis einer Fourier-Transformation vorstellen, bei der Sie Frequenzbereichswerte aus Zeitbereichswerten erhalten. Hier, mit createPeriodicWave(), spezifizieren Sie die Frequenzen, und der Browser führt eine inverse Fourier-Transformation durch, um einen Zeitbereichspuffer für die Frequenz des Oszillators zu erhalten. Hier setzen wir nur eine Komponente bei voller Lautstärke (1.0) auf dem Grundton, sodass wir eine Sinuswelle erhalten.

Spezifikationen

Specification
Web Audio API
# dom-oscillatornode-setperiodicwave

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
setPeriodicWave

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch