【问题标题】:how to connect Web Midi API to native application (like Ableton live)如何将 Web Midi API 连接到本机应用程序(如 Ableton live)
【发布时间】:2017-04-21 13:43:21
【问题描述】:

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

注意:我使用的是 Mac。

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

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

我看到的选项:

  1. 从 Ableton 将 Midi 发送到我的 MIDI 键盘,然后将它们转发到 Web MIDI API(有人能解释一下如何设置吗?)
  2. 在 Mac OS 中使用 IAC(应用程序间通信)驱动程序,“可以这么说,您可以在盒子内的应用程序之间创建虚拟 MIDI 电缆”。我不知道如何设置,因为 Midi Studio 中没有显示“web midi api”。

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

感谢您对此的任何意见!

【问题讨论】:

  • 1.如果您的 Midi 键盘支持 MIDI Thru,则传入的 MIDI 信号应该被传递到键盘的 MIDI 输出。 2.你可能想看看here。将虚拟 MIDI 端口用作浏览器 MIDI API 中的 MIDI 设备。
  • 如果您需要在 Windows 上执行此操作,请查看 Tobias Erichsen 的 loopMIDI 驱动程序。 tobias-erichsen.de/software/loopmidi.html

标签: javascript macos midi web-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 首选项并将其启用为输出设备):

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

【讨论】:

  • PC上有什么替代品吗?
【解决方案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 驱动程序(总线 1)”应通过 Web MIDI API 显示为 Midi 输入。

这里描述了这个过程:https://www.youtube.com/watch?v=MkWZ4rtRybQ

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 2011-08-31
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2021-03-25
    相关资源
    最近更新 更多