2012-02-01 19 views
5

me gustaría hacer una aplicación en Android que envía mensajes MIDI a través de USB a un ordenador para poder controlar los softwares de música como Cubase, FL, Razón, etc ...enviar mensajes MIDI a través de USB en Android

Hardware Controladores MIDI (por ejemplo, teclados) se reconocen automáticamente en el software de música en Windows. Supongo que es porque usan el protocolo MIDI universal que es reconocido directamente por el software de música. No necesitan su propio controlador.

Me gustaría poder usar mi teléfono/tableta como un controlador midi sin tener que instalar personal en la computadora (como con los controladores de hardware).

Hay un código de demostración en los desarrolladores de Android para controlar un juguete lanzador de misiles a través de USB. Si envío, utilizando la misma técnica, los mensajes que siguen el protocolo MIDI ¿funcionará así?

Gracias de antemano por su ayuda

Respuesta

3

No, no funciona de esa manera remota.

Los dispositivos MIDI USB usan un controlador ... simplemente es que generalmente son "de cumplimiento de clase" y todos pueden usar el mismo controlador estándar que viene con el sistema operativo.

Para hacer lo que propone, tendrá que emular un dispositivo a través de USB ... con las ID de PnP apropiadas y lo que no. Esto es casi imposible. El código que encontraste fue para usar USB en el modo de host, no al revés.

Descubrirá que es mucho más fácil enviar MIDI a través de la red y utilizar uno de los muchos controladores de red MIDI disponibles.

+0

Gracias por su respuesta, entonces la única solución es enviar mensajes a través de Wifi o Bluetooth y tener un software en el lado de la computadora que los traduzca y los envíe al software de música?Sin embargo, ¿tiene alguna idea de cómo TouchDaw puede trabajar directamente con controladores midi nativos y puede enviar mensajes a través de usb? Gracias – Jecimi

+1

Lo sentimos, TouchDAW utiliza controladores. Bueno, si realmente no es posible actuar como un dispositivo a través de USB, iré por ese camino entonces. Gracias ! – Jecimi

7

Escribí el controlador USB MIDI para Android.
Útil para construir su propio controlador/receptor MIDI.

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

El otro conductor MIDI es la biblioteca 'NMJ'.
Esta biblioteca también es compatible con USB MIDI. Además, es compatible con algunos protocolos MIDI de red, MIDI sobre bluetooth y MIDI sobre ADB (conexión de depuración).

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

+1

¿podría ampliar su respuesta y escribir un código de muestra para enviar un mensaje MIDI utilizando su lib? Parece que recientemente eliminó su documentación de implementación de javax.sound. ¿Hay algún problema con esta lib o sigue siendo funcional? – gaborous

+0

@kshoji: ¿Tiene el código fuente de Eclipse? –

+0

@kshoji, usted sabe si esta característica se incluirá en la biblioteca de soporte de Android (para la retrocompatibilidad con dispositivos anteriores) ??? – Billyjoker

10

Con Android 6.0 (API 23) esto es ahora posible - los dispositivos Android pueden actuar como clase compatible (no requiere controladores) dispositivos MIDI.

Para cambiar al modo USB-MIDI, los usuarios pueden deslizar hacia abajo desde la parte superior de la pantalla para acceder a la pantalla de selección del modo USB (a continuación).

Screenshot showing USB selection menu

Una aplicación puede enviar mensajes MIDI utilizando el new MIDI API. Aquí hay un código para enviar un mensaje 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); 

Para enviar otros tipos de mensajes consultar al MIDI message specification. Tenga en cuenta que los bytes están firmados en Java por lo que this post might be helpful.

+0

Como dijo @kshoji, entonces, ¿podría enviar midi desde Android 2.2 en adelante, realmente no necesitaba Android 6.0? – Billyjoker

Cuestiones relacionadas