2012-02-01 5 views
5

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

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

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

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

Заранее спасибо за помощь

ответ

3

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

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

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

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

+0

Спасибо за ваш ответ, поэтому единственное решение - отправлять сообщения через Wi-Fi или Bluetooth и иметь программное обеспечение на стороне компьютера, которое их переводит и отправляет в музыкальное программное обеспечение?Однако вы не знаете, как TouchDaw может работать напрямую с родными драйверами midi и может отправлять сообщения через USB? Спасибо – Jecimi

+1

К сожалению, TouchDAW действительно используют драйверы. Ну, если это действительно невозможно, как устройство через USB, я пойду так. Благодаря ! – Jecimi

7

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

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

Другое миди водитель 'НМС' библиотека.
Эта библиотека также поддерживает USB MIDI. Кроме того, он поддерживает некоторые сетевые MIDI-протоколы, MIDI через Bluetooth и MIDI через ADB (отладочное соединение).

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

+1

Вы могли бы расширить свой ответ и написать образец кода для отправки MIDI-сообщения с помощью вашей библиотеки? Кажется, вы недавно удалили свою документацию по реализации javax.sound. Есть ли проблемы с этим lib или он все еще функционирует? – gaborous

+0

@kshoji: Есть ли исходный код для Eclipse? –

+0

@kshoji вы знаете, если эта функция будет включена в библиотеку поддержки Android (для ретрокомпиляции с более ранними устройствами) ??? – Billyjoker

10

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

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

Screenshot showing USB selection menu

Приложение может посылать MIDI-сообщения с помощью new 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 message specification. Обратите внимание, что байты подписываются на Java, поэтому this post might be helpful.

+0

Как сказал @kshoji, вы можете отправить миди с Android 2.2, а не на Android 6.0? – Billyjoker

Смежные вопросы