2013-04-16 15 views
6

Sto avviando un progetto con una connessione MIDI wireless tramite Bluetooth. Per quanto ne so, non esiste un profilo MIDI definito nelle specifiche BT.MIDI Over Bluetooth

Mi chiedevo se alcuni di voi sarebbero interessati a condividere l'esperienza sul modo migliore di utilizzare il MIDI su BT, soprattutto per quanto riguarda il problema della latenza.

Il mio progetto si basa su BT bassa energia (BTLE), ora sto cercando di trovare il miglior profilo BT da usare, forse la porta seriale RFCOMM profilo esistente o un nuovo profilo personalizzato?

Qualsiasi consiglio sarebbe apprezzato. Miglior Jerome

risposta

4

Profili come RFCOMM non appartengono a BTLE ma al classico Bluetooth.

Nelle applicazioni musicali è necessario preoccuparsi della latenza. L'ora dal primo byte viene inviata da una tastiera midi e fino a quando arriva alla destinazione conta davvero. Non esiste una velocità BAUD esatta in SPP/RFCOMM ma una velocità effettiva che dipende dai 2 lati. http://snapshot.bluecove.org/bluecove-examples/bluecove-tester/speed.html

Se ingresso MIDI (31250 baud), inviarlo tramite un "canale", inviarla tramite MIDI (31250 baud), allora avete bisogno di guardare 2 cose: 1) Throughput, deve essere abbastanza grande 'sink' e 'source' Midi In e Midi Out 2) Latenza, deve essere abbastanza veloce da renderlo 'musicalmente' accurato.

Un evento Midi ON occupa approssimativamente 30 bit di segnale in modo da poter inviare circa 104 eventi Midi al secondo. La latenza è di circa 10 ms.

Su iOS l'intervallo di connessione più veloce (1 blocco di circa 20 byte) è di circa 19 ms se si interrompono i consigli o 39 ms se li si segue. La latenza totale sarebbe quindi: Midi In (10 ms) + BTLE GATT (fino a 39 ms) + Midi Out (10 ms) = 60 ms. 6 volte più lento del normale cavo MIDI. L'intervallo di connessione BTLE minimo è 7,5ms ma si perderanno i pacchetti al livello più basso, quindi diciamo 10ms: Midi In (10ms) + BTLE (10ms) + Midi Out (10ms) = 30ms. Non male, ma neanche molto impressionante. In ogni intervallo di connessione è possibile impacchettare circa 20 byte, quindi ci dovrebbe essere un sacco di larghezza di banda o velocità effettiva.

Date un'occhiata a questo progetto BTLE RFCOMM: http://support.connectblue.com/display/PRODBTSPA/Bluetooth+Low+Energy+Serial+Port+Adapter+-+Getting+Started

+0

latenza MIDI da solo è più tipicamente 4-5ms intorno. La maggior parte dei messaggi (nota on/off) sono 2 byte. I messaggi del controller di solito vengono ritardati dal dispositivo di invio se ci sono note da inviare. – Brad

+0

@Brad: la maggior parte dei messaggi (Note On/Off, Control Change, Pitch Bend, ...) sono ** 3 byte **. – Florian

+1

henrik e Brad: l'invio di un messaggio a 3 byte su un cavo MIDI standard richiede 960us (corrispondente ai messaggi 1041 di Full Note al secondo di Hal), non a 4-5 ms. Naturalmente, il ricevitore potrebbe aggiungere un ritardo all'elaborazione. – Florian