2

所以我有一个连接到我的机器的 midi 控制器,我让它在 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 输出,但也不起作用。有什么建议么?

4

1 回答 1

2

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

Mac 上的步骤:
1. 音频 Midi 设置 -> 窗口 -> 显示 Midi Studio。2. 在 Midi Studio 中双击 IAC Driver -> Create New Virtual Midi device with + 按钮在屏幕的左下角。检查“设备在线”。

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

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

现在它起作用了。

根据我的经验,我不需要启用 sysex 也不需要使用 https 来工作。我只是在我的 node.js/express 服务器上的 localhost 上运行 html。

于 2019-12-15T04:21:26.523 回答