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 的定义
工作草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持14 支持25 不支持156
OscillatorNode() 构造函数551 未知53 不支持42 未知
detune141225 不支持156
frequency141225 不支持156
onended141225 不支持156
setPeriodicWave141225 不支持156
start1412253 不支持156
stop1412253 不支持156
type141225 不支持156

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持18 未知26 未知14 支持
OscillatorNode() 构造函数552551 未知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 参数不是可选的。

相关链接