OscillatorNode: setPeriodicWave() 方法
OscillatorNode 介面的 setPeriodicWave() 方法用於指向一個 PeriodicWave 物件,該物件定義了一個週期性波形,可以用來塑造振盪器的輸出,當 type 為 custom 時。
語法
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 |
瀏覽器相容性
載入中…