2013-02-07 10 views
5

Chcę stworzyć koncepcję interfejsu czasu rzeczywistego dla interakcji audio, dlatego tak ważne jest naprawdę małe opóźnienie. Dużo czytałem na ten temat w zeszłym tygodniu, ale w tak krótkim czasie nie można uzyskać prawdziwego przeglądu. Zanim więc zacznę naprawdę głęboko, muszę ocenić wykonalność tego projektu.Czy opóźnienie OSC/Midi (brak dźwięku) jest możliwe na Androidzie?

Wiele czytałem o problemach z Androidem i aplikacjami audio o niskim opóźnieniu. Wiem, że iOS jest zdecydowanie lepszy w tej dziedzinie, ale wolałbym Androida, kiedy to możliwe. (Nie mam mac, który jest niezbędny dla rozwoju iOS, a ja podobnie jak bardziej „otwarte” Andoid więcej)

Więc moje pytanie to:

  1. Czy złe zachowanie niskiej latencji tylko związane z rzeczywistym buforem audio/przetwarzaniem, czy też ma wpływ na aplikacje midi lub OSC? Dla mnie interfejs jest ważną częścią - oznacza to, że dla mnie wystarczy, że otrzymam polecenia midi/OSC, które są przetwarzane na osobnym komputerze.

  2. Potrzebuję niskiego całkowitego opóźnienia (od zdarzenia dotyku palcem do polecenia wyjściowego). Czy to też jest problem z Androidem w porównaniu z iOS?

Odpowiedz

2

opóźnienie stanowi przede wszystkim funkcję bufora audio. Istnieje obszerna dyskusja na temat najnowszych osiągnięć tutaj:

http://createdigitalmusic.com/2012/07/android-high-performance-audio-in-4-1-and-what-it-means-plus-libpd-goodness-today/

Tl; dr wersja: Galaxy Nexus jest zdolny do 12ms opóźnienia bufora dźwięku jako Jelly Bean. Czytałem gdzie indziej, że Nexus 10 i Nexus 4 mogą zrobić to samo, ale Nexus 7 pozostaje w tyle.

I tu jest dyskusja nieco bardziej techniczny, który będzie również prowadzić do biblioteki, która wykorzystuje otwarte SL, aby osiągnąć niską latencję:

https://github.com/libpd/pd-for-android/wiki/Low-latency-support-for-compliant-devices

2

Android dźwiękowej powolny latencji związany jest od długości bufora dźwięku urządzenia.

Porównywano z moim starym tabletem (Android 3.2, Acer ICONIA Tab A500).
Opóźnienie przesyłania jednego zdarzenia MIDI (Note-on) wynosi średnio 12 milisekund.
Myślę, że aplikacje bez dźwięku mogą wystarczać.

Stworzyłem benchmark z Javą. Korzystanie z Androida NDK zapewnia lepszą wydajność.

+0

Dzięki, że to rodzaj informacji szukam! 12 ms nie brzmi dobrze, ale jest prawie na poziomie użytecznym. Czy mogę zapytać, jak zmierzyłeś to nieco bardziej szczegółowo, aby lepiej zrozumieć, co oznacza 12 ms w tym kontekście? W szczególności interesujący byłby przybliżony opis układu pomiarowego. –

+0

Napisałem program testowy, jak poniżej. 1. Wyślij pakiet MIDI z komputera Mac do systemu Android za pomocą kabla USB MIDI. 2. Android otrzymuje pakiet MIDI. Następnie Android natychmiast wysyła MIDI z powrotem do Mac. 3. Mac odbiera MIDI, następnie Mac zapisuje czas trwania. Zajęło to średnio 24 mSec. Ten czas trwania zawiera zarówno kierunek przesyłania; wysyłanie i odbieranie. Oceniłem opóźnienie w jedną stronę jako 12 msek. – kshoji

Powiązane problemy