8

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

注意:我在 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 中。

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

感谢您对此的任何意见!

4

2 回答 2

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);
  });
});

在 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('---');
  });
});
于 2017-04-21T14:42:20.380 回答
2

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

4) 现在“IAC Driver (Bus 1)”应该通过 Web MIDI API 显示为 Midi 输入。

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

于 2019-06-29T06:23:38.403 回答