[如果有更好的地方提出这个问题,请告诉我!]
注意:我在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首选项并将其作为输出设备启用):
警告:我发现这只适用于没有连接任何乐器的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('---');
});
});