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

Hof*_*off 7 javascript macos midi web-midi

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

注意:我使用的是Mac。

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

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

我看到的选项:

  1. 将Midi从Ableton发送到我的MIDI键盘,MIDI键盘将其转发到Web MIDI API(有人可以阐明如何设置吗?)
  2. 使用Mac OS中的IAC(应用程序间通信)驱动程序,“可以说,允许您在包装盒内的应用程序之间创建虚拟MIDI电缆。” 我不知道如何进行设置,因为“ Web midi api”未显示在Midi Studio中。

我更喜欢选项2,这样在没有物理MIDI设备的情况下也可以使用,但是我也很高兴知道选项1是否可以使用!

感谢您对此的任何投入!

rob*_*lep 5

我发现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);
  });
});
Run Code Online (Sandbox Code Playgroud)

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

MIDI输出

警告:我发现这仅适用于未连接任何乐器的MIDI轨道(请参阅本页)。

编辑:我假设该设备在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('---');
  });
});
Run Code Online (Sandbox Code Playgroud)


Fel*_*ner 5

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

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

在此输入图像描述

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

在此输入图像描述

3) 现在,在您想要发送音符的 Ableton MIDI 轨道中,选择“IAC Driver”作为 MIDI 输出。

在此输入图像描述

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

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