Отправить MIDI-сообщения через USB на Android - PullRequest
6 голосов
/ 02 февраля 2012

Я хотел бы создать приложение на Android, которое будет отправлять MIDI-сообщения через USB на компьютер, чтобы иметь возможность управлять музыкальными программами, такими как Cubase, FL, Reason, ect ...

Аппаратные MIDI-контроллеры (например, клавиатуры) автоматически распознаются в музыкальном программном обеспечении в Windows. Я думаю, это потому, что они используют универсальный протокол MIDI, который напрямую распознается музыкальным программным обеспечением. Им не нужен собственный водитель.

Я хотел бы иметь возможность использовать мой телефон / планшет в качестве контроллера midi без необходимости устанавливать персонал на компьютер (как с аппаратными контроллерами).

На Android-разработчиках есть демонстрационный код для управления игрушкой ракетного запуска через USB. Если я отправлю, используя ту же технику, сообщения, которые следуют протоколу MIDI, это будет работать так же?

Заранее благодарю за помощь

Ответы [ 3 ]

11 голосов
/ 19 августа 2015

С Android 6.0 (API 23) это теперь возможно - устройства Android могут работать как MIDI-устройства, совместимые с классом (без драйверов).

Чтобы переключиться в режим USB-MIDI, пользователи могут провести вниз от верхней части экрана, чтобы получить доступ к экрану выбора режима USB (ниже).

Screenshot showing USB selection menu

Приложение может отправлять MIDI-сообщения, используя новый MIDI API . Вот некоторый код для отправки сообщения MIDI NoteOn:

byte[] buffer = new buffer[3];
buffer[0] = (byte)0x90 + (byte)0x01; // Note On - Channel 1
buffer[1] = (byte)0x3C; // pitch (Note C3)
buffer[2] = (byte)127; // velocity
int offset = 0;
inputPort.send(buffer, offset, numBytes);

Для отправки сообщений других типов обратитесь к спецификации MIDI-сообщения . Обратите внимание, что байты подписаны в Java, поэтому этот пост может быть полезен .

7 голосов
/ 01 февраля 2013

Я написал драйвер USB MIDI для Android.
Полезно для создания собственного MIDI-контроллера / ресивера.

https://github.com/kshoji/USB-MIDI-Driver

Другим миди-драйвером является библиотека nmj.
Эта библиотека также поддерживает USB MIDI. Более того, он поддерживает некоторые сетевые MIDI-протоколы, MIDI через Bluetooth и MIDI через ADB (отладочное соединение).

http://www.humatic.de/htools/nmj/

3 голосов
/ 02 февраля 2012

Нет, удаленно так не работает.

Устройства USB MIDI действительно используют драйвер ... просто они, как правило, "совместимы с классом" и могут использовать тот же стандартный драйвер, который поставляется с ОС.

Чтобы сделать то, что вы предлагаете, вам нужно будет эмулировать устройство через USB ... в комплекте с соответствующими идентификаторами PnP, а что нет. Это почти невозможно. Код, который вы нашли, был для использования USB в режиме хоста, а не наоборот.

Вы обнаружите, что гораздо проще отправлять MIDI по сети и использовать один из многих доступных сетевых драйверов MIDI.

...