OscillatorNode: setPeriodicWave() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

OscillatorNode 介面的 setPeriodicWave() 方法用於指向一個 PeriodicWave 物件,該物件定義了一個週期性波形,可以用來塑造振盪器的輸出,當 typecustom 時。

語法

js
setPeriodicWave(wave)

引數

wave

一個 PeriodicWave 物件,表示用作振盪器輸出形狀的波形。

返回值

無(undefined)。

示例

下面的示例演示了 createPeriodicWave() 的簡單用法,透過一個週期性波形重新建立了一個正弦波。

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);

這是可行的,因為只包含基頻的聲音,根據定義,就是一個正弦波。

在這裡,我們建立了一個帶有兩個值的 PeriodicWave。第一個值是直流偏置,也就是振盪器開始時的值。這裡使用 0 是一個好選擇,因為我們希望曲線從 [-1.0; 1.0] 範圍的中間開始。

第二個及後續的值是正弦和餘弦分量。你可以將其理解為傅立葉變換的結果,其中你從時域值獲得頻域值。在這裡,使用 createPeriodicWave(),你指定了頻率,然後瀏覽器會執行一個逆傅立葉變換,為振盪器的頻率獲取一個時域緩衝區。在這裡,我們只在基頻上以全音量(1.0)設定了一個分量,所以我們得到的是一個正弦波。

規範

規範
Web Audio API
# dom-oscillatornode-setperiodicwave

瀏覽器相容性

另見