0

当我在输出端口上发送一条 midi 消息时,它会导致我的输入端口触发一个事件。这是预期的行为还是因为我使用 IAC 驱动程序并且输出连接回 IAC 驱动程序输入?

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

1 回答 1

1

我在不同的地方回答,但让我也在这里解释一下。

IAC 的意思是“应用程序间通信”。该驱动程序旨在在应用程序之间进行通信,因为一个可以通过输出端口发送 MIDI 消息,另一个可以通过输入端口接收它们。这是 IAC 特定的功能和行为。对于其他虚拟或物理设备,您不能指望这一点。

在 Linux 上,ALSA 提供了类似的直通设备。此外,您也许可以找到适用于 Windows 的类似驱动程序。或者您甚至可以通过 DIN 电缆将传统的 MIDI 输出/输入端口相互物理连接。

于 2016-07-29T15:13:11.460 回答