Signatur
Beschreibung
Die Eigenschaft name des Interfaces MIDIPort liefert den Namen, den Betriebssystem oder Gerätetreiber einem MIDI-Eingang (MIDIInput) oder MIDI-Ausgang (MIDIOutput) gegeben haben. Der Wert ist für Menschen gedacht und eignet sich deshalb gut für Auswahllisten, in denen Nutzer ihr Keyboard, ihren Controller oder ihren Synthesizer auswählen.
Man verwendet name meist zusammen mit manufacturer, type und state, um verfügbare Geräte anzuzeigen, oder um ein bestimmtes Gerät wiederzuerkennen, wenn es neu angesteckt wurde (Ereignis statechange).
Wichtig: Der Name ist nicht garantiert eindeutig und kann je nach Betriebssystem, Treiber oder USB-Anschluss anders aussehen. Zum dauerhaften Identifizieren eines Ports dient MIDIPort.id; name ist nur für die Anzeige gedacht. Ist kein Name bekannt, kann der Wert null bzw. ein leerer String sein.
Rückgabewert
"USB MIDI Interface". Kann null sein, wenn das System keinen Namen liefert.Beispiele
Alle MIDI-Eingänge und -Ausgänge mit Namen auflisten
const listMidiPorts = async () => {
const access = await navigator.requestMIDIAccess();
for (const input of access.inputs.values()) {
console.log(`Eingang: ${input.name} (${input.manufacturer})`);
}
for (const output of access.outputs.values()) {
console.log(`Ausgang: ${output.name} (${output.manufacturer})`);
}
};
listMidiPorts().catch((err) => console.error('MIDI nicht verfügbar:', err));
Geräteauswahl in einem <select>-Element
const select = document.querySelector('#midi-input');
const fillSelect = (access) => {
select.replaceChildren();
for (const input of access.inputs.values()) {
// Anzeige über name, Wert über die stabile id
const option = new Option(input.name ?? 'Unbenannter Port', input.id);
select.append(option);
}
};
const access = await navigator.requestMIDIAccess();
fillSelect(access);
access.addEventListener('statechange', () => fillSelect(access));
Meldung beim An- und Abstecken eines Geräts
const access = await navigator.requestMIDIAccess();
access.onstatechange = (event) => {
const { name, type, state } = event.port;
console.log(`${type} "${name}" ist jetzt ${state}`);
};
// Wichtig · Fallstricke
- Nicht eindeutig: Zwei gleiche Geräte können denselben
namehaben. Zum Speichern einer Auswahl (z. B. inlocalStorage) besseridverwenden. - Plattformabhängig: Derselbe Controller heißt unter Windows, macOS und Linux oft unterschiedlich (z. B. mit angehängtem Index oder Portnummer).
- Kann fehlen: Mit
??einen Ersatztext vorsehen, fallsnamenulloder leer ist. - Schreibgeschützt: Eine Zuweisung wird still ignoriert (im Strict Mode:
TypeError). - Kompatibilität & Sicherheit: Die Web MIDI API benötigt einen sicheren Kontext (HTTPS) und eine Nutzerberechtigung über
navigator.requestMIDIAccess(). Safari unterstützt die API nicht; vor Nutzung mit'requestMIDIAccess' in navigatorprüfen. Gerätenamen können zum Fingerprinting beitragen, weshalb Browser den Zugriff an eine Berechtigung knüpfen.