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



所以我有一个MIDI控制器连接到我的机器,我让它在Mac上与Logic Pro X成功播放。

我正在尝试使用 Web Midi API 向这个 midi 控制器发送一个音符,作为输出设备,希望它会触发 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 设备作为输出,并将此虚拟 midi 设备用作我的 daw 中的输入。然后使用上面的代码,但选择输出作为这个新的虚拟 midi 设备。

Mac 上的步骤:
1. 音频迷笛设置 -> 窗口 ->显示迷笛工作室。 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服务器上的本地主机上运行html。

最新更新