BaseAudioContext.createPeriodicWave()

BaseAudioContext 接口的 createPeriodicWave() 方法用于创建可对 OscillatorNode 输出进行整形的 PeriodicWave(周期波)。

语法

var wave = AudioContext.createPeriodicWave(real, imag[, constraints]);

返回值

一个 PeriodicWave.

参数

real
一系列余弦术语 (传统上的 A 项)。
imag
一系列正弦项 (传统上的 B 项)。
constraints 可选
一个字典对象,用于指定是否禁用规范化(如果没有指定,则默认启动规范化)。它有一个属性: 
  • disableNormalization: 如果设置为 true,对周期波禁用规范化。默认值为 false.

如果使用规范化,生成波形的最大绝对峰值为1。

例子

下面的例子为 createPeriodicWave() 的简单用法,创建包含简单正弦波的 PeriodicWave 对象。

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, {disableNormalization: true});

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

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

 

这之所以有用是因为根据定义仅包含基本音调的声音是正弦波。

这里,我们创建一个具有两个值的 PeriodicWave (周期波) 。第一个值是 DC(直流) 偏移,它是振荡器启动的值。0在这里是好的,因为我们想在 [-1.0; 1.0] 范围的中间开始曲线。

第二个值和后续值是正弦和余弦分量。你可以把它看做是傅里叶变换的结果,可以从时域值中获取频域值。这里,使用 createPeriodicWave(),你可以指定频率,浏览器会执行一个逆傅里叶变换,以获得振荡器的时域缓冲。这里,我们只在基础音上设置了一个全音量(1.0)的分量,所以我们得到一个正弦波。

傅里叶变换系数应该按升序给出 (例如. (a+bi)ei,(c+di)e2i,(f+gi)e3i\left(a+bi\right)e^{i} , \left(c+di\right)e^{2i} , \left(f+gi\right)e^{3i}    等.) 可以是正的或者是负的。一个简单的手动获取此类系数的方法是使用图形计算器,尽管这不是最好的。

规格

Specification Status Comment
Web Audio API
createPeriodicWave
Working Draft  

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
createPeriodicWaveChrome Full support 59
Notes
Full support 59
Notes
Notes Default values supported
Full support 57
Full support 10
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 22
Full support 22
Full support 15
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari Full support 6
Prefixed
Full support 6
Prefixed
Prefixed Implemented with the vendor prefix: webkit
WebView Android Full support 59
Notes
Full support 59
Notes
Notes Default values supported
Full support 57
Full support 4.4.3
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Chrome Android Full support 59
Notes
Full support 59
Notes
Notes Default values supported
Full support 57
Full support 33
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Mobile Full support YesFirefox Android Full support 26Opera Android Full support 22
Full support 22
Full support 14
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari iOS No support NoSamsung Internet Android Full support Yes
Possible to disable normalisationChrome Full support YesEdge Full support YesFirefox No support NoIE No support NoOpera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile Full support YesFirefox Android No support NoOpera Android ? Safari iOS No support NoSamsung Internet Android ?

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

参见

文档标签和贡献者

此页面的贡献者: Pada
最后编辑者: Pada,