--- title: OscillatorNode slug: Web/API/OscillatorNode translation_of: Web/API/OscillatorNode ---

{{APIRef("Web Audio API")}}

OscillatorNode 接口表示一个振荡器,它产生一个周期的波形信号(如正弦波)。它是一个 {{domxref("AudioScheduledSourceNode")}} 音频处理模块, 这个模块会生成一个指定频率的波形信号(即一个固定的音调)

一个 OscillatorNode 对象是通过 {{domxref("AudioContext.createOscillator()")}} 方法创建的。它总是有一个输出,但没有输入。它的基础属性(定义见 {{domxref("AudioNode")}} )默认如下:

Number of inputs 0
Number of outputs 1
Channel count mode max
Channel count 2 (not used in the default count mode)
Channel interpretation speakers

构造函数

{{domxref("OscillatorNode.OscillatorNode", "OscillatorNode()")}}
创建一个OscillatorNode对象的示例, 为node{{anch("properties")}}提供可选的一个定义默认值的对象.  如果默认值可接受,你可以简单地调用{{domxref("AudioContext.createOscillator()")}}工厂方法.

属性

继承自父类 {{domxref("AudioScheduledSourceNode")}},并添加下列属性:

{{domxref("OscillatorNode.frequency")}}
一个 a-rate {{domxref("AudioParam")}} 对象的属性代表了振动的频率(单位为赫兹hertz) (虽然返回的AudioParam 是只读的,但是它所表示的值是可以修改的)。 默认值是 440 Hz (基本的中A音高).
{{domxref("OscillatorNode.detune")}}
一个 a-rate {{domxref("AudioParam")}} 对象的属性代表振动的音高微调(单位是cent音分)  (虽然返回的AudioParam 是只读的,但是它所表示的值是可以修改的).。默认值是0。
{{domxref("OscillatorNode.type")}}
一个字符串,决定 OscillatorNode 播放的声音的周期波形; 它的值可以是基础值中的一个或者用户使用 {{domxref("PeriodicWave")}}。不同的波形可以产生不同的声调。 基础值有 "sine", "square", "sawtooth", "triangle" and "custom". 默认值是"sine"。

方法

继承自父级, {{domxref("AudioScheduledSourceNode")}}, 自有方法如下:

{{domxref("OscillatorNode.setPeriodicWave()")}}
设置一个 {{domxref("PeriodicWave")}} ,它描述了一个周期的波形常常替代标准波形之一; 调用这个方法来设置用户自定义的波形。它取代了已经废弃了的 {{domxref("OscillatorNode.setWaveTable()")}} 方法。

示例

下面示例展示了 {{ domxref("AudioContext") }} 的基本使用 来创建一个 oscillator 节点 并使用它来播放音乐。这是已经在运行的例子,可以看这里 Violent Theremin demo (see app.js 是相关代码).

// create web audio api context
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();

// create Oscillator node
var oscillator = audioCtx.createOscillator();

oscillator.type = 'square';
oscillator.frequency.value = 440; // value in hertz
oscillator.connect(audioCtx.destination);
oscillator.start();

说明

Specification Status Comment
{{SpecName('Web Audio API', '#the-oscillatornode-interface', 'OscillatorNode')}} {{Spec2('Web Audio API')}}

浏览器兼容性

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 14 {{property_prefix("webkit")}} {{CompatVersionUnknown}} 25 {{CompatNo}} 15 {{property_prefix("webkit")}}
22 (unprefixed)
6 {{property_prefix("webkit")}}
constructor {{CompatChrome(55.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOpera(42)}} {{CompatUnknown}}
Feature Android Android Webview Edge Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} 25 1.2 {{CompatNo}} {{CompatNo}} 6 {{property_prefix("webkit")}} 28 {{property_prefix("webkit")}}
constructor {{CompatNo}} {{CompatChrome(55.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOpera(42)}} {{CompatUnknown}} {{CompatChrome(55.0)}}

See also