2016-07-29 8 views
0

Wenn ich eine Midi-Nachricht an einen Ausgangsport sende, wird ein Ereignis ausgelöst, das von meinen Eingangsports ausgelöst wird. Ist dieses erwartete Verhalten oder liegt das daran, dass ich den IAC-Treiber verwende und die Ausgabe zurück in die IAC-Treibereingabe verdrahtet wird?Verhindern, dass ein Ereignis ausgelöst wird, wenn eine Midi-Nachricht gesendet wird

let output = midiAccess.outputs.get(portID) 
output.send(action.data) 

navigator.requestMIDIAccess({sysex: true}) 
    .then((midiAccess) => { 
    midiAccess.inputs.forEach((entry) => { 
     entry.onmidimessage = (event) => { 
     dispatch(midiMessage(event)) 
     } 
    }) 
    }) 

Antwort

1

Ich antwortete an einem anderen Ort, aber lassen Sie mich auch hier erklären.

Was IAC bedeutet, ist "Inter-Anwendungs-Kommunikation". Der Treiber ist für die Kommunikation zwischen Anwendungen ausgelegt, da man MIDI-Nachrichten über den Ausgangsanschluss senden kann und der andere diese über den Eingangsanschluss empfangen kann. Dies ist ein IAC-spezifisches Merkmal und Verhalten. Sie können dies nicht für andere virtuelle oder physische Geräte erwarten.

Unter Linux bietet ALSA ähnliche Pass-Through-Geräte. Außerdem können Sie möglicherweise einen ähnlichen Treiber für Windows finden. Oder Sie können sogar herkömmliche MIDI-Ausgangs-/Eingangsports über ein DIN-Kabel miteinander verbinden.