我发现 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 轨道(请参阅此页面)。
编辑:我假设设备在您的 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('---');
});
});