GainNode - 表示音量的变化
GainNode
接口表示音量的变化。它是一个 AudioNode
音频处理模块,它可以在输入数据传播到输出之前将给定的增益应用于输入数据。 GainNode
总是只有一个输入和一个输出,两者都有相同数量的通道。
增益是一个无单位的值,随时间变化,用来和所有输入通道的每个相应样本相乘。如果更改的话,则会立即应用新增益,从而在结果音频中产生难听的“咔嗒”声音。为了防止这种情况发生,请不要直接更改值,而是在 AudioParam
接口上使用指数插值方法更改。
输入数量 | 1 |
---|---|
输出数量 | 1 |
通道计数模式 | "max" |
通道数 |
2 (未在默认计数模式下使用) |
通道解释 | "speakers" |
构造函数
GainNode()
创建一个 GainNode
对象的新实例。您不应手动创建增益节点;应使用方法 AudioContext.createGain()
来创建。
属性
从其父类 AudioNode
继承了属性。
GainNode.gain
只读
一个 a-rate AudioParam
,表示要应用的增益量。你必须设置 AudioParam.value
或使用 AudioParam
的方法来改变增益的效果。
方法
没有特有的方法; 从其父类 AudioNode
继承了方法。
实例
以下示例显示了 AudioContext
的基本用法,通过 AudioContext
创建了 GainNode
,然后单击 “静音” 按钮,更改 gain
属性值,实现静音和取消静音。
以下是部分代码段,不能正常工作 - 有关完整的工作示例,请查看我们的 Voice-change-O-matic 演示( 查看源码。)
<div>
<a class="mute">静音按钮</a>
</div>
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var gainNode = audioCtx.createGain();
var mute = document.querySelector('.mute');
var source;
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia (
// 约束 - 该应用只需要音频
{
audio: true
},
// 成功回调
function(stream) {
source = audioCtx.createMediaStreamSource(stream);
},
// 错误回调
function(err) {
console.log('发生了以下错误:' + err);
}
);
} else {
console.log('您的浏览器不支持 getUserMedia!');
}
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// ...
mute.onclick = voiceMute;
function voiceMute() {
if(mute.id == "") {
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
mute.id = "activated";
mute.innerHTML = "取消静音";
} else {
gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
mute.id = "";
mute.innerHTML = "静音";
}
}
规范
规范 | 状态 | 备注 |
---|---|---|
Web Audio API GainNode 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 14 | 支持 | 25 | 不支持 | 15 | 6 |
GainNode() constructor |
551 | 未知 | 53 | 不支持 | 42 | 未知 |
gain |
14 | 12 | 25 | 不支持 | 15 | 6 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 14 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
GainNode() constructor |
551 | 551 | 未知 | 53 | 未知 | 42 | 未知 |
gain |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
1. 在 Chrome 59 之前,不支持默认值。