BaseAudioContext: createGain() method
The createGain()
method of the BaseAudioContext
interface creates a GainNode
, which can be used to control the overall gain (or volume) of the audio graph.
Syntax
Parameters
Return value
A GainNode
which takes as input one or more audio sources and outputs audio whose volume has been adjusted in gain (volume) to a level specified by the node's GainNode.gain
a-rate parameter.
Examples
The following example shows basic usage of an AudioContext
to create a GainNode
, which is then used to mute and unmute the audio when a Mute button is clicked by changing the gain
property value.
The below snippet wouldn't work as is — for a complete working example, check out our Voice-change-O-matic demo (view source.)
<div>
<button class="mute">Mute button</button>
</div>
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
const mute = document.querySelector(".mute");
let source;
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia(
{
audio: true,
},
(stream) => {
source = audioCtx.createMediaStreamSource(stream);
},
(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 === "") {
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
mute.id = "activated";
mute.textContent = "Unmute";
} else {
gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
mute.id = "";
mute.textContent = "Mute";
}
};
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
createGain |
24 |
12 |
25 |
No |
15 |
7 |
≤37 |
25 |
25 |
14 |
7 |
1.5 |
See also