BaseAudioContext.createPeriodicWave()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/zh-cn/web/api/baseaudiocontext/index.md)
BaseAudioContext
接口的 createPeriodicWave()
方法用于创建可对 OscillatorNode
输出进行整形的 PeriodicWave
(周期波)。
语法
createPeriodicWave(real, imag)
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 |
---|
Web Audio API # dom-baseaudiocontext-createperiodicwave |
浏览器兼容性
BCD tables only load in the browser