OscillatorNode:setPeriodicWave() 方法

基线 广泛可用

此功能已得到很好的建立,并且可以在许多设备和浏览器版本中使用。它自以下时间起在浏览器中可用 2021 年 4 月.

setPeriodicWave() 方法是 OscillatorNode 接口的一部分,用于指向一个 PeriodicWave,该 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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅