如何让 web midi 输出控制器工作?

How to get web midi output controller to work?

所以我有一个 midi 控制器连接到我的 machine,我在 mac.

上用 Logic Pro X 成功播放了它

我正在尝试使用 Web Midi API 向这个 midi 控制器发送一个音符,作为一个输出设备,希望它会触发 midi 控制器,后者又会通过 Logic 触发声音.

我正在使用 webmidi.js 并且我试过了:

WebMidi.enable(function (err) {

  if (err) {
    console.log("WebMidi could not be enabled.", err);
  } else {
    console.log("WebMidi enabled!");
      console.log(WebMidi.inputs);
    console.log(WebMidi.outputs);
    var output = WebMidi.outputs[0];
    output.playNote("C3");
  }

});

但我没有听到音符在播放。我确实确保我的 midi 控制器被列为输出设备。

奇怪的是,当我玩 Note 时,它​​实际上点亮了控制器上的 LED 键。但我还是听不到声音。我还尝试了一个不同的控制器,它的按键上没有 LED,但我也听不到声音。

我也试过访问这个网站 http://webmidi-examples.glitch.me/ 在最后一个例子中它也尝试发送 MIDI 输出但也不起作用。有什么建议吗?

我发现这样做的唯一方法是创建一个虚拟 MIDI 设备作为输出,并在我的 daw 中使用这个虚拟 MIDI 设备作为输入。然后使用上面的代码,但 select 输出作为这个新的虚拟 MIDI 设备。

Mac 步数:
1. 音频 Midi 设置 -> Window -> 显示 Midi Studio。 2. 在 Midi Studio 中双击 IAC 驱动程序 -> 使用屏幕左下角的 + 按钮创建新的虚拟 Midi 设备。检查 "Device is Online".

转到您选择的 DAW 并将输入更改为这个新的 MIDI 设备。 现在在 javascript 中,使用上面的代码,更改为新的输出:

var output = WebMidi.outputs[1]; // whatever index your virtual midi device is

现在可以了。

根据我的经验,我不需要启用 sysex 也不需要使用 https 来工作。我只是 运行 我节点上本地主机上的 html。js/express 服务器。