OscillatorNode - 代表一个周期性波形,例如正弦波
OscillatorNode
接口代表一个周期性波形,例如正弦波。它是一个 AudioScheduledSourceNode
音频处理模块,可以创建给定波的指定频率 - 实际上是恒定音调。
OscillatorNode
是通过 BaseAudioContext.createOscillator()
方法的创建。它始终只有一个输出而没有输入。其基本属性默认值(有关定义,请参见 AudioNode
)是:
输入数量 | 9 |
---|---|
输出数量 | 1 |
通道计数模式 | max |
通道数 | 2 (在默认计数模式下不使用) |
通道解释 | speakers |
构造函数
OscillatorNode()
创建一个 OscillatorNode
对象的新实例,可以选择提供一个为节点的 properties 指定默认值的对象。如果可接受默认值,则可以简单地调用 BaseAudioContext.createOscillator()
工厂方法。
属性
从其父接口 AudioScheduledSourceNode
继承了属性,并添加以下属性:
OscillatorNode.frequency
一个 a-rate AudioParam
表示以赫兹为单位的振荡频率(尽管返回的 AudioParam
是只读的,但它表示的值不是)。默认值为 440 Hz(标准的中 A 音符)。
OscillatorNode.detune
一个 a-rate AudioParam
代表以分音为单位的振荡失调(尽管返回的 AudioParam
是只读的,但它表示的值不是)。默认值为 0。
OscillatorNode.type
一个字符串,指定要播放的波形的形状;它可以是许多标准值中的一个,也可以是 custom
以使用 PeriodicWave
来描述自定义波形。不同的波浪会产生不同的音调。标准值是 "sine"
,"square"
,"sawtooth"
,"triangle"
和 "custom"
。默认值为 "sine"
。
事件处理程序
OscillatorNode.onended
设置 ended
事件的事件处理程序,当音调停止播放时将触发该事件处理程序。
方法
从其父接口 AudioScheduledSourceNode
继承了方法,并添加以下内容:
OscillatorNode.setPeriodicWave()
设置一个 PeriodicWave
,它描述了要使用的周期波形而不是标准波形之一;调用此命令会将 type
设置为 custom
。该方法替换现已过时的 OscillatorNode.setWaveTable()
方法。
OscillatorNode.start()
指定开始播放音调的确切时间。
OscillatorNode.stop()
指定停止播放音调的时间。
实例
以下实例显示了 AudioContext
在创建振荡器节点并开始在其上播放音调的基本用法。有关应用示例,请查看我们的 Violent Theremin 演示(请参阅 app.js 以获取相关代码)。
// 创建 Web 音频 API 上下文
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// 创建振荡器节点
var oscillator = audioCtx.createOscillator();
oscillator.type = 'square';
oscillator.frequency.setValueAtTime(440, audioCtx.currentTime); // 赫兹值
oscillator.connect(audioCtx.destination);
oscillator.start();
规范
规范 | 状态 | 备注 |
---|---|---|
Web Audio API OscillatorNode 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 14 | 支持 | 25 | 不支持 | 15 | 6 |
OscillatorNode() 构造函数 | 551 | 未知 | 53 | 不支持 | 42 | 未知 |
detune | 14 | 12 | 25 | 不支持 | 15 | 6 |
frequency | 14 | 12 | 25 | 不支持 | 15 | 6 |
onended | 14 | 12 | 25 | 不支持 | 15 | 6 |
setPeriodicWave | 14 | 12 | 25 | 不支持 | 15 | 6 |
start | 14 | 12 | 253 | 不支持 | 15 | 6 |
stop | 14 | 12 | 253 | 不支持 | 15 | 6 |
type | 14 | 12 | 25 | 不支持 | 15 | 6 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
OscillatorNode() 构造函数 | 552 | 551 | 未知 | 53 | 未知 | 42 | 未知 |
detune | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
frequency | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
onended | 支持 | 18 | 未知 | 26 | 未知 | 14 | 未知 |
setPeriodicWave | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
start | 支持 | 18 | 未知 | 263 | 未知 | 14 | 未知 |
stop | 支持 | 18 | 未知 | 263 | 未知 | 14 | 未知 |
type | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
1. 在 Chrome 59 之前,不支持默认值。
2. 在 59 版本之前,不支持默认值。
3. 在 Firefox 30 之前,when
参数不是可选的。