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
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.
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
BCD tables only load in the browser