Signatur
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
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`);
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}`);
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}`));
Wert bei einem OfflineAudioContext
const offline = new OfflineAudioContext({
numberOfChannels: 4,
length: 44100,
sampleRate: 44100
});
console.log(offline.destination.maxChannelCount);
// Wichtig · Fallstricke
- Kanalzahl nicht zu hoch setzen: Ist
destination.channelCountgrößer alsmaxChannelCount, wirft der Browser eineIndexSizeError-DOMException. Den Wert also immer vorher prüfen. - Nicht jeder Browser meldet die echte Hardware: Manche Browser und Betriebssysteme geben nur
2zurü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. übersetSinkId(), 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
TypeErroraus. - Autoplay-Regeln: Ein
AudioContextstartet ohne Nutzerinteraktion oft im Zustandsuspended. Den Wert kann man trotzdem auslesen.