PeriodicWave - 定义了可用于调整 OscillatorNode 输出的周期性波形
PeriodicWave
接口定义了可用于调整 OscillatorNode
输出的周期性波形。
PeriodicWave
没有输入或输出;它用于在调用 OscillatorNode.setPeriodicWave()
时定义自定义振荡器。PeriodicWave
本身是由 AudioContext.createPeriodicWave()
创建 / 返回的。
构造函数
PeriodicWave.PeriodicWave()
使用所有属性的默认值创建一个新的 PeriodicWave
对象实例。如果您希望在一开始就建立自定义属性值,请使用 AudioContext.createPeriodicWave()
工厂方法。
属性
没有;同时,PeriodicWave
不继承任何属性。
方法
没有;同时,PeriodicWave
不继承任何方法。
实例
以下实例说明了 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
。第一个值是直流偏移,它是振荡器启动时的值。这里的 0 是对的,因为我们要曲线在 [-1.0;1.0] 范围的中间启动。
第二个和后续值是正弦和余弦分量。您可以将其视为傅立叶变换的结果,从时域值中获取频域值。在这里,使用 createPeriodicWave()
指定频率,然后浏览器执行傅立叶逆变换,以获取振荡器频率的时域缓冲区。在这里,我们仅在基调上以全音量(1.0)设置一个分量,因此得到正弦波。
傅里叶变换的系数应按升序(例如 等等)给出,可以为正或负。手动获得此类系数(虽然不是最佳)的一种简单方法是使用图形计算器。
规范
规范 | 状态 | 备注 |
---|---|---|
Web Audio API PeriodicWave 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 14 | 支持 | 25 | 不支持 | 15 | 6 |
PeriodicWave() 构造函数 | 551 | 未知 | 53 | 不支持 | 42 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
PeriodicWave() 构造函数 | 551 | 551 | 未知 | 53 | 未知 | 42 | 未知 |
1. 在 Chrome 59 之前,不支持默认值。