BaseAudioContext: createPeriodicWave() 方法
BaseAudioContext 介面的 createPeriodicWave() 方法用於建立一個 PeriodicWave。這個波形用於定義一個週期性波形,可以用來塑造 OscillatorNode 的輸出。
語法
js
createPeriodicWave(real, imag)
createPeriodicWave(real, imag, constraints)
引數
real 和 imag 陣列必須具有相同的長度,否則會丟擲錯誤。
constraints可選-
一個字典物件,用於指定是否停用歸一化。如果未指定,預設啟用歸一化。它包含一個屬性:
disableNormalization-
如果設定為
true,則會為週期性波形停用歸一化。預設值為false。
注意: 如果進行了歸一化,則生成的波形的最大絕對峰值將為 1。
返回值
一個 PeriodicWave 物件。
示例
下面的示例說明了 createPeriodicWave() 的簡單用法,用於建立一個包含簡單正弦波的 PeriodicWave 物件。
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, { disableNormalization: true });
osc.setPeriodicWave(wave);
osc.connect(ac.destination);
osc.start();
osc.stop(2);
這是可行的,因為只包含基頻的聲音本質上就是正弦波。
在這裡,我們建立了一個帶有兩個值的 PeriodicWave。第一個值是直流偏移,也就是振盪器開始時的值。值為 0 在這裡是好的,因為它將曲線的起點設在 [-1.0; 1.0] 範圍的中間。第二個及後續值是正弦和餘弦分量,類似於傅立葉變換的結果,它將時域值轉換為頻域值。在這裡,使用 createPeriodicWave(),您指定頻率,瀏覽器會執行逆傅立葉變換,以獲得振盪器頻率的時域緩衝區。在此示例中,我們將基頻分量設定為一個(值為 1.0)且音量最大,因此我們得到一個正弦波。請注意,基頻對應于振蕩器的頻率(預設情況下為 440 Hz)。因此,改變振盪器的頻率會有效地移動此週期性波形隨之移動。
傅立葉變換的係數應按升序給出(例如:等等),可以是正數或負數。手動獲取此類係數的一個簡單方法(儘管不是最好的方法)是使用圖形計算器。
規範
| 規範 |
|---|
| Web Audio API # dom-baseaudiocontext-createperiodicwave |
瀏覽器相容性
載入中…