OscillatorNode.setPeriodicWave()

 OscillatorNode 接口的 setPeriodicWave() 方法用来指向 PeriodicWave,PeriodicWave 定义了一个周期性波形能够形成oscillator的输出, 当type (en-US) 是 custom 的时候.

该方法取代了废弃的 OscillatorNode.setWaveTable().

语法

OscillatorNode.setPeriodicWave(wave);

参数

wave
一个 PeriodicWave 对象, 表示特定的波形用来形成oscillator的输出。

返回值

undefined

示例

下面示例说明了 createPeriodicWave() 方法的简单使用, 从一个周期波形中重新生成了一个正弦波形。

var real = new Float32Array(2);
var imag = new Float32Array(2);
var ac = new AudioContext();
var osc = ac.createOscillator();

real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;

var wave = ac.createPeriodicWave(real, imag);

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

osc.start();
osc.stop(2);

这段代码可以运行因为通过定义一个正弦波形使得声音包含了基础的音调。
 

这里,我们用两个值创建一个PeriodicWave。第一个值是直流偏移,是oscillator开始的时候的值。这里 0 很合适,因为我们想要在 [-1.0; 1.0] 这个范围的中间值开始。

第二个和后面的值是正弦和余弦内容。可以把它看做傅里叶变换的结果,使得可以从时间阈值得到频率阈值。这里通过 createPeriodicWave() 方法,可以指定频率,并且浏览器执行逆傅里叶变换来得到一个时间阈值缓冲。Here, we only set one component at full volume (1.0) on the fundamental tone, so we get a sine wave.

说明

Specification Status Comment
Web Audio API
setPeriodicWave
Working Draft  

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 14 webkit (en-US) (Yes) 23 未实现 15 webkit (en-US)
22 (unprefixed)
6 webkit (en-US)
Feature Android Chrome Edge Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 未实现 28 webkit (en-US) (Yes) 25 1.2 未实现 未实现 webkit (en-US)

See also