BaseAudioContext.createPeriodicWave() - Web API 接口参考 编辑
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)的分量,所以我们得到一个正弦波。
傅里叶变换系数应该按升序给出 (例如. 等.) 可以是正的或者是负的。一个简单的手动获取此类系数的方法是使用图形计算器,尽管这不是最好的。
规格
Specification | Status | Comment |
---|---|---|
Web Audio API createPeriodicWave | Working Draft |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.参见
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论