2012-02-01 26 views
5

Vorrei fare un app su Android che invia messaggi MIDI via USB ad un computer per essere in grado di controllare i software musicali come Cubase, FL, Reason, ect ...inviare messaggi MIDI tramite USB su Android

I controller MIDI hardware (ad es. Tastiere) vengono riconosciuti automaticamente nel software musicale su Windows. Immagino sia perché usano il protocollo MIDI universale che viene riconosciuto direttamente dal software musicale. Non hanno bisogno del loro autista.

Mi piacerebbe poter utilizzare il mio telefono/tablet come controller midi senza dover installare personale sul computer (come con i controller hardware).

C'è un codice demo sugli sviluppatori Android per controllare un giocattolo lanciamissili tramite USB. Se invio, usando la stessa tecnica, i messaggi che seguono il protocollo MIDI funzioneranno proprio così?

vi ringrazio in anticipo per il vostro aiuto

risposta

3

No, non funziona in modalità remota come quella.

I dispositivi MIDI USB utilizzano un driver ... è solo che generalmente sono "conformi alla classe" e possono tutti utilizzare lo stesso driver di serie fornito con il sistema operativo.

Per fare ciò che si propone, è necessario emulare un dispositivo su USB ... completo con gli ID PnP appropriati e quali no. Questo è quasi impossibile. Il codice che hai trovato era per l'utilizzo dell'USB in modalità host, non il contrario.

Troverete che è molto più facile inviare MIDI via rete e utilizzare uno dei tanti driver MIDI di rete disponibili.

+0

Grazie per la risposta, quindi l'unica soluzione è inviare messaggi tramite Wifi o Bluetooth e avere un software sul lato del computer che li traduce e li invia al software musicale?Comunque hai idea di come TouchDaw possa funzionare direttamente con i driver midi nativi ed è in grado di inviare messaggi tramite usb? Grazie – Jecimi

+1

Spiacenti, TouchDAW usa i driver. Beh, se davvero non è possibile comportarsi come un dispositivo tramite USB, allora andrò da quella parte. Grazie ! – Jecimi

7

Ho scritto il driver USB MIDI per Android.
Utile per creare il proprio controller MIDI/ricevitore.

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

L'altro driver MIDI è libreria 'NMJ'.
Questa libreria supporta anche USB MIDI. Inoltre, supporta alcuni protocolli MIDI di rete, MIDI su bluetooth e MIDI su ADB (collegamento di debug).

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

+1

potresti estendere la tua risposta e scrivere un codice di esempio per inviare un messaggio MIDI usando la tua lib? Sembra che tu abbia recentemente rimosso la tua documentazione di implementazione di javax.sound. C'è qualche problema con questa libreria o è ancora funzionante? – gaborous

+0

@kshoji: hai il codice sorgente per Eclipse? –

+0

@kshoji sai se questa funzione sarà inclusa nella libreria di supporto di Android (per la retrocompatibilità con i dispositivi precedenti) ??? – Billyjoker

10

Con Android 6.0 (API 23) questo è ora possibile - dispositivi Android possono agire come classe compatibile (nessun driver richiesto) dispositivi MIDI.

Per passare alla modalità USB-MIDI, gli utenti possono scorrere verso il basso dalla parte superiore dello schermo per accedere alla schermata di selezione della modalità USB (sotto).

Screenshot showing USB selection menu

Un'applicazione può inviare messaggi MIDI utilizzando il new MIDI API. Ecco il codice per inviare un messaggio 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); 

Per inviare altri tipi di messaggi consultare il MIDI message specification. Si noti che i byte sono firmati in Java, quindi this post might be helpful.

+0

Come detto @kshoji, quindi, è possibile inviare midi da Android 2.2 in poi, non è davvero necessario Android 6.0? – Billyjoker

Problemi correlati