Start · Sprachen · JavaScript · Referenz · AudioDestinationNode.maxChannelCount

AudioDestinationNode.maxChannelCount

Eigenschaft

Schreibgeschützte Zahl (<code>unsigned long</code>), die angibt, wie viele Kanäle das physische Audio-Ausgabegerät höchstens verarbeiten kann.

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

Signatur

AudioDestinationNode.maxChannelCount

Beschreibung

Die Eigenschaft maxChannelCount des AudioDestinationNode gibt an, wie viele Kanäle das Ausgabegerät höchstens unterstützt. Das Gerät ist dabei das, was der Browser gerade als Audioausgabe nutzt, etwa Stereo-Kopfhörer oder eine 5.1-Soundkarte. Die Eigenschaft ist schreibgeschützt. Den Knoten erreicht man über audioContext.destination.

Wichtig ist sie vor allem für Mehrkanal-Anwendungen wie Surround-Wiedergabe, Ambisonics oder DAW-ähnliche Werkzeuge. Man liest maxChannelCount aus und setzt danach destination.channelCount auf einen Wert, den das Gerät tatsächlich unterstützt. Ist der Wert zu hoch, wirft der Browser einen Fehler.

Bei einem OfflineAudioContext hängt der Wert nicht von der Hardware ab. Er entspricht der Kanalzahl, die man dem Konstruktor übergeben hat. Ein Wert von 0 bedeutet, dass die Kanalzahl nicht geändert werden kann.

Rückgabewert

Typ
number
Beschreibung
Eine ganze Zahl ohne Vorzeichen (unsigned long): die höchste Kanalzahl, die das Ausgabegerät unterstützt. Bei üblicher Stereo-Hardware ist das meist 2.

Beispiele

Maximale Kanalzahl auslesen

const ctx = new AudioContext();
console.log(`Ausgabegerät unterstützt bis zu ${ctx.destination.maxChannelCount} Kanäle`);
Ausgabegerät unterstützt bis zu 2 Kanäle

Alle verfügbaren Kanäle für Mehrkanal-Ausgabe nutzen

const ctx = new AudioContext();
const dest = ctx.destination;

// Kanalzahl auf das Maximum der Hardware setzen
dest.channelCount = dest.maxChannelCount;
dest.channelCountMode = 'explicit';
dest.channelInterpretation = 'discrete';

console.log(`Aktive Kanäle: ${dest.channelCount}`);
Aktive Kanäle: 6 // z. B. bei einer 5.1-Soundkarte

Surround-Modus nur bei geeigneter Hardware aktivieren

const setupOutput = async () => {
  const ctx = new AudioContext();
  await ctx.resume();
  const { maxChannelCount } = ctx.destination;

  if (maxChannelCount >= 6) {
    ctx.destination.channelCount = 6;
    ctx.destination.channelInterpretation = 'speakers';
    return { ctx, mode: '5.1 Surround' };
  }
  return { ctx, mode: 'Stereo' };
};

setupOutput().then(({ mode }) => console.log(`Wiedergabemodus: ${mode}`));
Wiedergabemodus: Stereo

Wert bei einem OfflineAudioContext

const offline = new OfflineAudioContext({
  numberOfChannels: 4,
  length: 44100,
  sampleRate: 44100
});
console.log(offline.destination.maxChannelCount);
4

// Wichtig · Fallstricke

  • Kanalzahl nicht zu hoch setzen: Ist destination.channelCount größer als maxChannelCount, wirft der Browser eine IndexSizeError-DOMException. Den Wert also immer vorher prüfen.
  • Nicht jeder Browser meldet die echte Hardware: Manche Browser und Betriebssysteme geben nur 2 zurück, obwohl mehr Kanäle angeschlossen sind. Ein Grund ist Datenschutz: Die Kanalzahl kann zum Fingerprinting beitragen. Ein anderer Grund sind Einschränkungen der Treiber, etwa bei Safari oder unter Linux. Wechselt man das Ausgabegerät, z. B. über setSinkId(), kann sich der Wert ändern.
  • Kein Parameter nötig: Es handelt sich um eine reine Leseeigenschaft ohne Parameter. Schreibzugriffe werden stillschweigend ignoriert, im Strict Mode lösen sie einen TypeError aus.
  • Autoplay-Regeln: Ein AudioContext startet ohne Nutzerinteraktion oft im Zustand suspended. Den Wert kann man trotzdem auslesen.