BaseAudioContext:createGain() 方法
BaseAudioContext
接口的 createGain()
方法创建一个 GainNode
,可用于控制音频图的整体增益(或音量)。
注意: GainNode()
构造函数是创建 GainNode
的推荐方法;请参阅 创建 AudioNode。
语法
js
createGain()
参数
无。
返回值
一个 GainNode
,它接收一个或多个音频源作为输入,并输出音量已根据节点的 GainNode.gain
a-rate 参数调整到指定级别的音频。
示例
以下示例显示了 AudioContext
的基本用法,用于创建 GainNode
,然后在单击“静音”按钮时通过更改 gain
属性值来使用它静音和取消静音音频。
下面的代码片段不能按原样工作——有关完整的有效示例,请查看我们的 变声器 演示(查看源代码)。
html
<div>
<button class="mute">Mute button</button>
</div>
js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
const mute = document.querySelector(".mute");
let source;
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia(
// constraints - only audio needed for this app
{
audio: true,
},
// Success callback
(stream) => {
source = audioCtx.createMediaStreamSource(stream);
},
// Error callback
(err) => {
console.error(`The following gUM error occurred: ${err}`);
},
);
} else {
console.error("getUserMedia not supported on your browser!");
}
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// …
mute.onclick = () => {
if (mute.id === "") {
// 0 means mute. If you still hear something, make sure you haven't
// connected your source into the output in addition to using the GainNode.
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
mute.id = "activated";
mute.textContent = "Unmute";
} else {
gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
mute.id = "";
mute.textContent = "Mute";
}
};
规范
规范 |
---|
Web Audio API # dom-baseaudiocontext-creategain |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。