因此,我有一个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控制器列为输出设备。

奇怪的是,当我玩时注意它实际上会点亮控制器上的LED键。但是我仍然听不到声音。我还尝试了另一种在按键上没有发光二极管的控制器,但是我也听不到声音。

我也尝试过访问该网站http://webmidi-examples.glitch.me/,在上一个示例中,该网站还尝试发送midi输出,但也不起作用。有什么建议么?

最佳答案

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

在Mac上的步骤:
1.音频Midi设置->窗口->显示Midi Studio。
2.在Midi Studio中,双击IAC驱动程序->使用屏幕左下角的+按钮创建新的虚拟Midi设备。检查“设备在线”。

转到您选择的DAW,然后将输入更改为该新的Midi设备。
现在在javascript中,使用上面的代码,更改为新的输出:

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


现在可以了。

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

10-01 04:09
查看更多