Start · Sprachen · JavaScript · Referenz · MIDIPort.name

MIDIPort.name

Eigenschaft

Schreibgeschützte Eigenschaft, die den vom System vergebenen Namen eines MIDI-Ports als <code>string</code> zurückgibt, z. B. „Launchpad Mini MIDI 1“.

seit JavaScript Web MIDI API — Chromium-Browser (Chrome/Edge/Opera Kategorie: webapi

Signatur

MIDIPort.name

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

Typ
string | null
Beschreibung
Der Systemname des Ports, z. B. "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));
Eingang: Launchpad Mini MIDI 1 (Focusrite A.E. Ltd) Ausgang: Launchpad Mini MIDI 1 (Focusrite A.E. Ltd)

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}`);
};
input "nanoKONTROL2" ist jetzt connected input "nanoKONTROL2" ist jetzt disconnected

// Wichtig · Fallstricke

  • Nicht eindeutig: Zwei gleiche Geräte können denselben name haben. Zum Speichern einer Auswahl (z. B. in localStorage) besser id verwenden.
  • 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, falls name null oder 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 navigator prüfen. Gerätenamen können zum Fingerprinting beitragen, weshalb Browser den Zugriff an eine Berechtigung knüpfen.