Start · Sprachen · JavaScript · Referenz · AudioNode.channelCount

AudioNode.channelCount

Eigenschaft

Ganzzahl, die festlegt, auf wie viele Kanäle die Eingänge eines <code>AudioNode</code> beim Up- und Down-Mixen gebracht werden.

seit JavaScript Baseline: alle modernen Browser (Web Audio API) Kategorie: webapi

Signatur

AudioNode.channelCount

Beschreibung

Die Eigenschaft channelCount gibt an, wie viele Kanäle ein Knoten beim Mischen seiner Eingangsverbindungen verwendet. Wie der Wert genau ausgewertet wird, hängt von channelCountMode ab:

  • "max": channelCount wird ignoriert, die Kanalzahl ergibt sich aus der größten Eingangsverbindung.
  • "clamped-max": wie "max", aber höchstens channelCount Kanäle.
  • "explicit": Es wird genau channelCount verwendet – Eingänge werden entsprechend hoch- oder heruntergemischt.

Wie das Mischen im Detail geschieht (lautsprecherbezogen oder rein kanalweise), bestimmt channelInterpretation ("speakers" oder "discrete"). Der Standardwert von channelCount ist bei den meisten Knoten 2; bei AudioDestinationNode kann der Wert bis maxChannelCount gesetzt werden.

Praktisch nützlich ist die Eigenschaft, um z. B. ein Signal gezielt auf Mono herunterzumischen, Mehrkanal-Ausgabe (5.1) zu aktivieren oder einen ChannelMergerNode/AudioWorkletNode mit fester Kanalzahl zu betreiben.

Rückgabewert

Typ
number
Beschreibung
Ganzzahl ≥ 1 (nicht vorzeichenbehaftet). Lesbar und – je nach Knotentyp – beschreibbar. Die Obergrenze liegt implementierungsabhängig bei mindestens 32.

Beispiele

Standardwert auslesen

const ctx = new AudioContext();
const gain = ctx.createGain();
console.log(gain.channelCount, gain.channelCountMode, gain.channelInterpretation);
2 "max" "speakers"

Stereo-Signal auf Mono heruntermischen

const ctx = new AudioContext();
const osc = new OscillatorNode(ctx);
const monoGain = new GainNode(ctx, {
  channelCount: 1,
  channelCountMode: 'explicit',
  channelInterpretation: 'speakers'
});
osc.connect(monoGain).connect(ctx.destination);
osc.start();
console.log(monoGain.channelCount);
1

Mehrkanal-Ausgabe aktivieren, falls verfügbar

const ctx = new AudioContext();
const dest = ctx.destination;
console.log('max. Kanäle:', dest.maxChannelCount);
if (dest.maxChannelCount >= 6) {
  dest.channelCount = 6; // 5.1-Ausgabe
  dest.channelCountMode = 'explicit';
}
console.log('aktiv:', dest.channelCount);
max. Kanäle: 2 aktiv: 2

Ungültigen Wert abfangen

const ctx = new AudioContext();
const gain = ctx.createGain();
try {
  gain.channelCount = 0;
} catch (err) {
  console.log(err.name);
}
NotSupportedError

// Wichtig · Fallstricke

  • Bei channelCountMode = "max" (Standard für viele Knoten) hat das Setzen von channelCount keine hörbare Wirkung – gemeinsam mit "explicit" oder "clamped-max" verwenden.
  • Werte von 0 oder über dem Maximum lösen NotSupportedError aus; bei AudioDestinationNode führt ein Wert über maxChannelCount zu IndexSizeError.
  • Einige Knoten haben feste Einschränkungen: z. B. ChannelMergerNode/ChannelSplitterNode, ConvolverNode, PannerNode, StereoPannerNode und DynamicsCompressorNode erlauben nur bestimmte Werte (oft maximal 2) und werfen sonst eine Ausnahme.
  • Bei OfflineAudioContext ist destination.channelCount durch den Konstruktor festgelegt und nicht änderbar.
  • In allen modernen Browsern unterstützt; die tatsächliche Mehrkanalausgabe hängt von der Audiohardware ab.