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

时间:2017-04-21 13:43:22

标签: javascript macos midi web-midi

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

注意:我在Mac上。

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

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

我看到的选项:

  1. 将Midi从Ableton发送到我的MIDI键盘,然后将它们转发到Web MIDI API(有人可以说明如何设置它吗?)
  2. 使用Mac OS中的IAC(应用程序间通信)驱动程序,“允许您在盒子内的应用程序之间创建虚拟MIDI线缆,可以这么说。”我不知道如何设置它,因为'web midi api'没有显示在Midi Studio中。
  3. 我更喜欢选项2,所以当没有物理MIDI设备时这也可以使用,但我也很乐意了解选项1是否可行!

    感谢您的任何意见!

2 个答案:

答案 0 :(得分:2)

我发现Web MIDI API的文档有点令人困惑,所以我尝试了webmidi(它建立在Web MIDI API之上,所以它所做的一切都应该使用& #34;原始" 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首选项并启用它作为输出设备):

MIDI output

警告:我发现这只适用于没有连接任何乐器的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('---');
  });
});

答案 1 :(得分:1)

要将Midi事件从Ableton发送到OSX上的Web MIDI API,您需要执行以下操作:

1)运行名为“音频MIDI设置”的内置OSX应用。选择“ MIDI Studio”。双击“ IAC驱动程序”。然后选中“设备在线”复选框。

enter image description here

2)转到Ableton->首选项-> MIDI。在“输入:IAC驱动程序(总线1)”的底部,启用“跟踪”和“远程”。对于“输出:IAC驱动程序(总线1)”,启用“跟踪”。

enter image description here

3)现在,在要从中发送笔记的Ableton midi轨道中,选择“ IAC Driver”作为Midi输出。

enter image description here

4)现在,“ IAC驱动程序(总线1)”应该通过Web MIDI API作为Midi输入出现。

此过程描述如下:https://www.youtube.com/watch?v=MkWZ4rtRybQ