javascript – 如何将Web Midi API连接到本机应用程序(如Ableton live)

[如果有更好的地方提出这个问题,请告诉我!]

注意:我在Mac上.

我已经使用Web MIDI API成功地将MIDI键盘连接到我的浏览器(Chrome).

我想知道我是否也可以连接应用程序(如Ableton Live),这样,当Ableton输出MIDI消息时,浏览器可以接收这些消息吗?

我看到的选项:

>将Midi从Ableton发送到我的MIDI键盘,它将它们转发到Web MIDI API(任何人都可以了解如何设置它?)
>在Mac OS中使用IAC(应用程序间通信)驱动程序,“允许您在框内的应用程序之间创建虚拟MIDI电缆,可以这么说.”我不知道如何设置它,因为’web midi api’没有出现在Midi Studio中.

我更喜欢选项2,所以当没有物理MIDI设备时这也可以工作,但我也很乐意了解选项1是否可行!

感谢您的任何意见!

最佳答案 我发现Web MIDI API的文档有点令人困惑,所以我尝试了
webmidi(它建立在Web MIDI API之上,因此它所做的一切都应该可以使用“原始”API实现).

要接收MIDI信息,这对我有用:

WebMidi.enable(function(err) {
  if (err) throw err;
  console.log("WebMidi enabled!");
  WebMidi.getInputByName('IAC Driver Bus 1').addListener('noteon', 'all', function(e) {
    console.log('note on', e);
  });
});

在Ableton中,“Midi To”需要指向IAC设备(如果它没有显示,您可能需要打开MIDI首选项并将其作为输出设备启用):

《javascript – 如何将Web Midi API连接到本机应用程序(如Ableton live)》

警告:我发现这只适用于没有连接任何乐器的MIDI音轨(见this page).

编辑:我假设您的Mac上的设备命名相似,否则这是我用来枚举输入和输出设备的代码:

WebMidi.enable(function(err) {
  if (err) throw err;
  WebMidi.inputs.forEach(input => {
    console.log('- id  :', input.id);
    console.log('- name:', input.name);
    console.log('- manu:', input.manufacturer);
    console.log('- conn:', input.connection);
    console.log('---');
  });
  console.log('outputs:', WebMidi.outputs);
  WebMidi.outputs.forEach(output => {
    console.log('- id  :', output.id);
    console.log('- name:', output.name);
    console.log('- manu:', output.manufacturer);
    console.log('- conn:', output.connection);
    console.log('---');
  });
});
点赞