2013-04-16 16 views
6

Ich beginne ein Projekt mit einer drahtlosen MIDI-Verbindung über Bluetooth. Soweit ich weiß, ist in der BT-Spezifikation kein MIDI-Profil definiert.MIDI über Bluetooth

Ich habe mich gefragt, ob einige von euch daran interessiert wären, Erfahrungen über die beste Art und Weise zu teilen, MIDI über BT zu verwenden, besonders im Hinblick auf das Latenzproblem.

Mein Projekt basiert auf BT-Niedrigenergie (BTLE), ich versuche nun, das beste zu verwendende BT-Profil zu finden, vielleicht das RFCOMM-Profil für die serielle Schnittstelle oder ein neues benutzerdefiniertes Profil?

Jeder Tipp wäre willkommen. Am besten Jerome

Antwort

4

Profile wie RFCOMM gehören nicht zu BTLE, sondern zum Bluetooth-Klassiker.

In Musikanwendungen sollten Sie sich um Latenz kümmern. Die Zeit vom ersten Byte wird von einer Midi-Tastatur gesendet und bis zur Ankunft am Ziel ist es wirklich wichtig. Es gibt keine exakte BAUD-Rate in SPP/RFCOMM, aber der Durchsatz hängt von den 2 Seiten ab. http://snapshot.bluecove.org/bluecove-examples/bluecove-tester/speed.html

Wenn Sie den Eingang MIDI (31250 Baud), es durch einen „Kanal“ senden, es durch MIDI auszusenden (31250 BAUD), dann müssen Sie auf 2 Dinge aussehen: 1) Durchsatz, groß genug sein muss, "Sinken" und "Quelle" Midi In und Midi Out 2) Latenz, muss schnell genug sein, um es "musikalisch" genau zu machen.

Ein Midi-EIN-Ereignis dauert ungefähr 30 Signalbits, so dass Sie 104 MIDI-Ereignisse pro Sekunde senden können. Die Latenz beträgt ca. 10ms.

Auf iOS ist das schnellste Verbindungsintervall (1 Block von etwa 20 Bytes) etwa 19 ms, wenn Sie die Empfehlungen brechen oder 39 ms, wenn Sie ihnen folgen. Die Gesamtlatenz wäre dann: Midi In (10ms) + BTLE GATT (bis 39ms) + Midi Out (10ms) = 60ms. 6 mal langsamer als normales MIDI-Kabel. Minimum BTLE Verbindungsintervall ist 7.5ms, aber Sie werden Pakete auf der niedrigsten Ebene verlieren, sagen wir einfach 10ms: Midi In (10ms) + BTLE (10ms) + Midi Out (10ms) = 30ms. Nicht schlecht, aber auch nicht wirklich beeindruckend. In jedem Verbindungsintervall können Sie etwa 20 Bytes packen, so dass es viel Bandbreite oder Durchsatz geben sollte.

Werfen Sie einen Blick auf dieses BTLE RFCOMM Projekt: http://support.connectblue.com/display/PRODBTSPA/Bluetooth+Low+Energy+Serial+Port+Adapter+-+Getting+Started

+0

MIDI Latenz auf seine eigene ist typischer 4-5ms um. Die meisten Nachrichten (Note ein/aus) sind 2 Bytes. Steuerungsnachrichten werden normalerweise vom sendenden Gerät verzögert, wenn Notizen gesendet werden sollen. – Brad

+0

@Brad: Die meisten Nachrichten (Note On/Off, Steuerungswechsel, Pitch Bend, ...) sind ** 3 Bytes **. – Florian

+1

henrik und Brad: Das Senden von 3-Byte-Nachrichten über ein Standard-MIDI-Kabel dauert 960us (entspricht @ Hals 1041 vollen Note-Nachrichten pro Sekunde), nicht 4-5ms. Natürlich kann der Empfänger eine Verzögerung für die Verarbeitung hinzufügen. – Florian