2016-07-29 65 views
0

當我在輸出端口上發送MIDI消息時,它會導致我的輸入端口觸發事件。這是預期的行爲還是這是因爲我使用IAC驅動程序,並且輸出連接回IAC驅動程序輸入?防止在發送MIDI消息時觸發事件

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)) 
     } 
    }) 
    }) 

回答

1

我在不同的地方回答,但讓我在這裏解釋一下。

IAC的意思是「應用程序間通信」。 驅動程序被設計爲在應用程序之間進行通信,因爲可以通過輸出端口發送MIDI消息,另一個可以通過輸入端口接收它們。這是IAC特定的功能和行爲。你不能期望這一點對於其他虛擬或物理設備。

在Linux上,ALSA提供了類似的直通設備。此外,您可能能夠找到適用於Windows的類似驅動程序。或者您甚至可以通過DIN電纜將傳統的MIDI輸出/輸入端口彼此進行物理連接。