Как подключить Web Midi API к нативному приложению (например, Ableton live)
[Если есть лучшее место, чтобы задать этот вопрос, пожалуйста, дайте мне знать!]
Примечание: я на Mac.
Я успешно подключил MIDI-клавиатуру к своему браузеру (Chrome), используя Web MIDI API.
Мне интересно, могу ли я также подключить приложения (например, Ableton Live), чтобы, когда Ableton выводил MIDI-сообщения, эти сообщения могли быть получены браузером?
Варианты, которые я вижу:
- Отправьте Midi из Ableton на мою MIDI-клавиатуру, которая перенаправляет их в Web MIDI API (кто-нибудь может пролить свет на то, как это можно настроить?)
- Используйте драйвер IAC (межплатформенный обмен данными) в Mac OS, который "позволяет, так сказать, создавать виртуальные MIDI-кабели между приложениями внутри коробки". Я понятия не имею, как это настроить, потому что "web midi api" не отображается в Midi Studio.
Я бы предпочел вариант 2, чтобы он также работал, когда нет физического MIDI-устройства, но я также был бы рад узнать, может ли вариант 1 работать!
Спасибо за любой вклад по этому вопросу!
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-треков, к которым не прикреплены инструменты (см. Эту страницу).
РЕДАКТИРОВАТЬ: я предполагаю, что устройство называется аналогично на вашем 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('---');
});
});
Чтобы отправлять midi-события из Ableton в Web MIDI API на OSX, вам необходимо сделать следующее:
1) Запустите встроенное приложение OSX под названием "Audio MIDI Setup". Выберите "MIDI Studio". Дважды щелкните "Драйвер IAC". Затем установите флажок "Устройство в сети".
2) Перейдите в Ableton -> Настройки -> MIDI. Внизу для "Вход: драйвер IAC (шина 1)" включите "Отслеживание" и "Дистанционное управление". Для "Выход: драйвер IAC (шина 1)" включите "Track".
3) Теперь на миди-треке Ableton, с которого вы хотите отправлять заметки, выберите "Драйвер IAC" в качестве миди-выхода.
4) Теперь "Драйвер IAC (шина 1)" должен отображаться как MIDI-вход через веб-интерфейс MIDI API.
Этот процесс описан здесь: https://www.youtube.com/watch?v=MkWZ4rtRybQ.