Signatur
Beschreibung
Die Eigenschaft channelInterpretation eines AudioNode ist ein String aus einer festen Werteliste (Enum). Sie bestimmt, wie Kanäle gemischt werden, wenn die Kanalzahl einer Eingangsverbindung nicht zur Kanalzahl passt, mit der der Knoten intern rechnet. Wie viele Kanäle das sind, ergibt sich aus channelCount und channelCountMode.
Es gibt zwei Werte:
"speakers"(Standard): Es gelten die Mischregeln der Spezifikation für die üblichen Lautsprecher-Layouts Mono (1), Stereo (2), Quad (4) und 5.1 (6). Beim Up-Mixing von Mono auf Stereo wird das Signal zum Beispiel auf L und R kopiert. Beim Down-Mixing von Stereo auf Mono gilt0.5 * (L + R). Passt die Kanalzahl zu keinem dieser Layouts, wird automatisch wie bei"discrete"gemischt."discrete": Die Kanäle werden der Reihe nach einander zugeordnet. Beim Up-Mixing werden fehlende Kanäle mit Stille aufgefüllt, beim Down-Mixing werden überzählige Kanäle einfach weggelassen.
"discrete" brauchen Sie immer dann, wenn Kanäle keine Lautsprecherpositionen darstellen: bei Mehrkanal-Aufnahmen mit getrennten Mikrofonspuren, bei Ambisonics-Signalen, bei Steuersignalen oder beim gezielten Zusammenführen mit ChannelMergerNode bzw. Aufteilen mit ChannelSplitterNode. Für normale Wiedergabe über Lautsprecher bleibt "speakers" die richtige Wahl.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | "speakers" | "discrete" | "speakers" | Neuer Wert beim Setzen der Eigenschaft. Andere Strings werden ohne Fehlermeldung ignoriert. |
Rückgabewert
"speakers" oder "discrete".Beispiele
Aktuellen Wert auslesen und ändern
const ctx = new AudioContext();
const gain = ctx.createGain();
console.log(gain.channelInterpretation);
// Kanäle ohne Lautsprecher-Mischregeln zuordnen
gain.channelInterpretation = 'discrete';
console.log(gain.channelInterpretation);
Mono-Quelle nur auf den linken Kanal legen
const ctx = new AudioContext();
const osc = ctx.createOscillator(); // Mono-Ausgang
const gain = ctx.createGain();
gain.channelCount = 2;
gain.channelCountMode = 'explicit';
// discrete: Mono -> Kanal 0 (links), Kanal 1 bleibt still
gain.channelInterpretation = 'discrete';
osc.connect(gain).connect(ctx.destination);
osc.start();
osc.stop(ctx.currentTime + 1);
Unerwünschtes Mischen ungültiger Werte erkennen
const ctx = new OfflineAudioContext(2, 44100, 44100);
const node = ctx.createGain();
node.channelInterpretation = 'surround'; // ungültig, wird ignoriert
console.log(node.channelInterpretation);
const setInterpretation = (n, v) => {
n.channelInterpretation = v;
if (n.channelInterpretation !== v) {
throw new TypeError(`Ungültiger Wert: ${v}`);
}
};
try {
setInterpretation(node, 'surround');
} catch (e) {
console.log(e.message);
}
// Wichtig · Fallstricke
- Nur beim Mischen wirksam: Stimmen Eingangs- und Rechenkanalzahl überein, hat die Eigenschaft keine Wirkung. Wie viele Kanäle intern verwendet werden, steuern Sie über
channelCountundchannelCountMode. - Ungültige Werte: Nach den WebIDL-Regeln für Enums löst das Zuweisen eines unbekannten Strings keinen Fehler aus. Die Zuweisung wird einfach ignoriert.
- Einschränkungen bei einzelnen Knoten: Bei
ChannelSplitterNodeist der Wert fest auf"discrete"gesetzt. Jeder Versuch, ihn zu ändern, löst einenInvalidStateErroraus. - Automatischer Wechsel: Auch bei
"speakers"wird wie bei"discrete"gemischt, wenn die Kanalzahl kein Standard-Layout ist (z. B. 3 oder 8 Kanäle). - Kompatibilität: Die Eigenschaft wird in allen aktuellen Browsern (Chrome, Firefox, Safari, Edge) unterstützt. Sehr alte Safari-Versionen brauchen
webkitAudioContext. In Node.js gibt es sie nur über Zusatzbibliotheken wienode-web-audio-api.