Signatur
Beschreibung
Die Eigenschaft manufacturer gehört zum Interface MIDIPort und damit auch zu den abgeleiteten Interfaces MIDIInput und MIDIOutput. Sie enthält den Herstellernamen, den das Betriebssystem bzw. der Gerätetreiber für den Port meldet, zum Beispiel "Roland", "Yamaha" oder "Microsoft Corporation".
Gebraucht wird der Wert vor allem, um Geräte in einer Oberfläche lesbar anzuzeigen, etwa in einem Auswahlmenü „Hersteller – Modell“ zusammen mit MIDIPort.name. Außerdem lassen sich damit herstellerspezifische Funktionen aktivieren, zum Beispiel SysEx-Nachrichten, die nur Geräte eines bestimmten Herstellers verstehen.
Der Wert stammt direkt vom System und ist nicht standardisiert. Derselbe Hersteller kann je nach Betriebssystem unterschiedlich geschrieben werden oder ganz fehlen. Für eine dauerhafte Wiedererkennung eines Geräts eignet sich deshalb MIDIPort.id besser.
Rückgabewert
string, oder null, wenn keiner verfügbar ist. In der Praxis kommt je nach Plattform auch ein leerer String "" vor.Beispiele
Alle MIDI-Eingänge mit Hersteller auflisten
const listInputs = async () => {
const access = await navigator.requestMIDIAccess();
for (const input of access.inputs.values()) {
// Fehlenden Hersteller abfangen
const hersteller = input.manufacturer || 'Unbekannter Hersteller';
console.log(`${hersteller} – ${input.name}`);
}
};
listInputs().catch((err) => console.error('MIDI nicht verfügbar:', err));
Auswahlmenü für MIDI-Ausgänge befüllen
const select = document.querySelector('#midi-out');
const fillOutputs = async () => {
const access = await navigator.requestMIDIAccess();
select.replaceChildren();
for (const output of access.outputs.values()) {
const option = document.createElement('option');
option.value = output.id; // ID ist stabiler als der Herstellername
option.textContent = output.manufacturer
? `${output.manufacturer} ${output.name}`
: output.name;
select.append(option);
}
};
fillOutputs();
Neu angeschlossene Geräte eines Herstellers erkennen
const access = await navigator.requestMIDIAccess({ sysex: false });
access.addEventListener('statechange', (event) => {
const { port } = event;
const istYamaha = (port.manufacturer ?? '').toLowerCase().includes('yamaha');
if (port.state === 'connected' && istYamaha) {
console.log(`Yamaha-Gerät erkannt: ${port.name} (${port.type})`);
}
});
// Wichtig · Fallstricke
- Kann leer sein: Rechne immer damit, dass
nulloder""zurückkommt, besonders bei virtuellen Ports (IAC-Treiber, loopMIDI) und generischen USB-Class-Compliant-Geräten. Mit??oder||kannst du einen Ersatzwert setzen. - Unterschiede je nach Plattform: Windows, macOS, Linux (ALSA) und Android melden den Hersteller unterschiedlich. Vergleiche deshalb nicht exakt, sondern ohne Rücksicht auf Groß-/Kleinschreibung und mit
includes(). - Datenschutz: Hersteller- und Gerätenamen können für Browser-Fingerprinting genutzt werden. Deshalb ist die Web MIDI API nur in sicheren Kontexten (HTTPS) verfügbar. Neuere Chrome-Versionen fragen außerdem schon beim Zugriff ohne SysEx um Erlaubnis.
- Browser-Unterstützung: Chromium-Browser und Firefox (ab 108, mit Berechtigungsabfrage bzw. Site-Permission-Add-on) unterstützen die API. Safari unterstützt sie nicht. Prüfe vorher mit
'requestMIDIAccess' in navigator. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird stillschweigend ignoriert und löst im Strict Mode keinen Fehler aus, weil es nur einen Getter gibt.