Die GainNode
Schnittstelle ermöglicht eine Verstärkung (engl. gain) eines Signals, was als veränderte Lautstärke wahrgenommen wird. Es handelt sich um ein AudioNode
audio-verarbeitendes Modul, das ein Eingabesignal mit einer gewissen Verstärkung (die auch negativ sein kann) versieht, und es an den Ausgang weiterleitet. Ein GainNode
hat immer genau einen Eingang und einen Ausgang, beide mit derselben Anzahl an Kanälen.
Verstärkung ist ein Wert ohne Einheit, der sich über die Zeit ändert. Er wird mit allen zeitlich korrespondierenden Samples aller Eingangskanäle multipliziert, um das Signal zu verändern. Ändert sich der Wert, wird der neue Wert durch einen "de-zippering" Algorithmus angewendet, um unästhetisches Klick-Artifakte im Signal zu vermeiden.
Anzahl der Eingänge | 1 |
---|---|
Anzahl der Ausgänge | 1 |
Kanalzählmethode | "max" |
Anzahl Kanäle | 2 (not used in the default count mode) |
Kanalinterpretation | "speakers" |
Eigenschaften
Inherits properties from its parent, AudioNode
.
GainNode.gain
Read only- Ist ein a-rate
AudioParam
der das Ausmaß der Verstärkung angibt.
Methoden
Keine spezifischen Methoden; erbt die Methoden der Elternklasse , AudioNode
.
Beispiel
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>
<a class="mute">Mute button</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 (
// constraints - only audio needed for this app
{
audio: true
},
// Success callback
function(stream) {
source = audioCtx.createMediaStreamSource(stream);
},
// Error callback
function(err) {
console.log('The following gUM error occured: ' + err);
}
);
} else {
console.log('getUserMedia not supported on your browser!');
}
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 = "Unmute";
} else {
gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
mute.id = "";
mute.innerHTML = "Mute";
}
}
Spezifikationen
Specification | Status | Comment |
---|---|---|
Web Audio API Die Definition von 'GainNode' in dieser Spezifikation. |
Arbeitsentwurf |
Browser Kompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 10.0webkit | 25.0 (25.0) | Nicht unterstützt | 15.0webkit 22 |
6.0webkit |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | ? | 26.0 | 1.2 | ? | ? | ? | 33.0 |
Siehe auch
- Die Web Audio API benutzen