2013-04-16 21 views
6

Zaczynam projekt z bezprzewodowym połączeniem MIDI przez Bluetooth. O ile mi wiadomo, nie ma profilu MIDI zdefiniowanego w specyfikacji BT.MIDI Over Bluetooth

Zastanawiam się, czy niektórzy z was byliby zainteresowani dzieleniem się doświadczeniami na temat najlepszego sposobu korzystania z MIDI przez BT, zwłaszcza w kwestii opóźnień.

Mój projekt opiera się na BT niskoenergetycznym (BTLE), teraz próbuję znaleźć najlepszy profil BT do użycia, może port szeregowy RFCOMM istniejący profil lub nowy profil niestandardowy?

Każda wskazówka byłaby doceniana. Najlepsze Jerome

Odpowiedz

4

Profile takie jak RFCOMM nie należą do BTLE, ale do klasycznego bluetooth.

W aplikacjach muzycznych należy zadbać o opóźnienie. Czas od pierwszego bajtu jest wysyłany z klawiatury MIDI i dopóki nie dotrze do miejsca docelowego, to naprawdę ma znaczenie. Nie ma dokładnej stawki BAUD w SPP/RFCOMM, ale przepustowość, która zależy od dwóch stron. http://snapshot.bluecove.org/bluecove-examples/bluecove-tester/speed.html

Jeśli wejście MIDI (31250 bodów), wysłać go przez „kanał”, wysłać go poprzez MIDI (31250 bodów) Następnie trzeba spojrzeć na 2 rzeczy: 1) przepustowość musi być wystarczająco duża do "zlewu" i "źródła" Midi In i Midi Out 2) Opóźnienie musi być wystarczająco szybkie, aby było "muzycznie" dokładne.

Zdarzenie Midi ON zajmuje około 30 bitów, dzięki czemu można wysłać 104 zdarzenia MIDI na sekundę. Opóźnienie wynosi około 10ms.

Na iOS najszybszy interwał połączenia (1 blok około 20 bajtów) wynosi około 19 ms, jeśli złamiesz zalecenia lub 39 ms, jeśli je zastosujesz. Całkowite opóźnienie wynosi: Midi In (10 ms) + BTLE GATT (do 39 ms) + Midi Out (10 ms) = 60 ms. 6 razy wolniej niż zwykły kabel MIDI. Minimalny interwał połączenia BTLE to 7,5ms, ale stracisz pakiety na najniższym poziomie, powiedzmy 10ms: Midi In (10ms) + BTLE (10ms) + Midi Out (10ms) = 30ms. Nieźle, ale też nie imponująco. W każdym interwale połączenia można spakować około 20 bajtów, więc powinno być dużo przepustowości lub przepustowości.

Spójrz na tego projektu BTLE RFCOMM: http://support.connectblue.com/display/PRODBTSPA/Bluetooth+Low+Energy+Serial+Port+Adapter+-+Getting+Started

+0

MIDI latency na własną rękę jest bardziej typowo około 4-5ms. Większość wiadomości (uwaga włącz/wyłącz) to 2 bajty. Komunikaty kontrolera są zwykle opóźniane przez urządzenie wysyłające, jeśli istnieją notatki do wysłania. – Brad

+0

@Brad: większość wiadomości (Note On/Off, Control Change, Pitch Bend, ...) to ** 3 bajty **. – Florian

+1

henrik i Brad: Wysyłanie jednego 3-bajtowego komunikatu za pośrednictwem standardowego kabla MIDI zajmuje 960us (pasujące do 1041 wiadomości Note na sekundę), a nie 4-5ms. Oczywiście odbiornik może dodać opóźnienie do przetwarzania. – Florian