ConstantSourceNode

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

ConstantSourceNode 接口(Web Audio API 的一部分)代表一个音频源(基于 AudioScheduledSourceNode),其输出是一个单一不变的值。这使得它在需要从音频源引入恒定值的情况下非常有用。此外,它还可以用作可构造的 AudioParam,通过自动化其 offset 的值或将其连接到另一个节点;请参阅 使用 ConstantSourceNode 控制多个参数

ConstantSourceNode 没有输入,只有一个单声道(单通道)输出。输出的值始终与其 offset 参数的值相同。

EventTarget AudioNode AudioScheduledSourceNode ConstantSourceNode
输入数量 0
输出数量 1

构造函数

ConstantSourceNode()

创建并返回一个新的 ConstantSourceNode 实例,可以选择指定一个对象来建立对象属性的初始值。作为替代,您可以使用 BaseAudioContext.createConstantSource() 工厂方法;请参阅 创建 AudioNode

实例属性

继承其父接口 AudioScheduledSourceNode 的属性,并添加以下属性:

offset

一个 AudioParam,指定此源连续输出的值。默认值为 1.0。

事件

继承其父接口 AudioScheduledSourceNode 的事件。

注意: 某些浏览器对这些事件的实现是 AudioScheduledSourceNode 接口的一部分。

ended

每当 ConstantSourceNode 数据停止播放时触发。

实例方法

继承其父接口 AudioScheduledSourceNode 的方法。

注意: 某些浏览器对这些方法的实现是 AudioScheduledSourceNode 接口的一部分。

start()

安排在精确时间播放声音。

stop()

安排在精确时间停止播放声音。

示例

在文章 使用 ConstantSourceNode 控制多个参数 中,创建了一个 ConstantSourceNode 以便一个滑块控件可以改变两个 GainNode 的增益。这三个节点设置如下:

js
gainNode2 = context.createGain();
gainNode3 = context.createGain();
gainNode2.gain.value = gainNode3.gain.value = 0.5;
volumeSliderControl.value = gainNode2.gain.value;

constantNode = context.createConstantSource();
constantNode.connect(gainNode2.gain);
constantNode.connect(gainNode3.gain);
constantNode.start();

gainNode2.connect(context.destination);
gainNode3.connect(context.destination);

此代码首先创建增益节点,并将它们和将调整其值的音量控件都设置为 0.5。然后通过调用 AudioContext.createConstantSource() 来创建 ConstantSourceNode,并将两个增益节点的增益参数连接到 ConstantSourceNode。在调用其 start() 方法启动常量源之后。最后,将两个增益节点连接到音频目标(通常是扬声器或耳机)。

现在,每当 constantNode.offset 的值改变时,gainNode2gainNode3 的增益都将改变为相同的值。

要查看此示例的实际效果,以及阅读这些代码片段所源自的其余代码,请参阅 使用 ConstantSourceNode 控制多个参数

规范

规范
Web Audio API
# ConstantSourceNode

浏览器兼容性

另见