Reaaliaikaisten audio-ohjelmointirajapintojen vertailu

Loading...
Thumbnail Image
Journal Title
Journal ISSN
Volume Title
Sähkötekniikan korkeakoulu | Master's thesis
Date
2014-08-25
Department
Major/Subject
Akustiikka ja äänenkäsittely
Mcode
S3004
Degree programme
EST - Elektroniikka ja sähkötekniikka
Language
en
Pages
83
Series
Abstract
Tässä työssä vertailtiin kolmea yleisesti saatavilla olevaa audioohjelmointirajapintaa, ALSAa, Core Audiota ja WASAPIa. Suorituskyvyn vertailemiseksi toteutettiin Karplus-Strong-kielimalliin perustuva reaaliaikainen testiohjelma kaikilla kolmella eri ohjelmointirajapinnalla. Mallin aaltotaulukko korvattiin järjestelmän tuntemattomalla viiveellä. Testeissä lyhyt valkoisen kohinan purske lähetettiin äänikortin ulostuloon, joka oli kytketty saman laitteen sisäänmenoon lyhyellä kaapelilla. Testiohjelma luki signaalia laitteen sisäänmenosta, tallensi sen analyysiä varten, mutta lisäksi lähetti sen alipäästösuodattimen läpi takaisin ulostuloon, muodostaen silmukan. Kohinapurske käyttäytyy tällaisessa silmukassa kuin kielisoittimen kieli, kun se on ensin alkutilastaan poikkeutettu. Kun testiohjelmaa suoritettiin reaaliaikaisesti, järjestelmän viiveet eli latenssit näkyivät kielimallissa aaltotaulukon pituuksina, joita vertailtiin. Testiohjelmia ajettiin samalla Apple-laitteistolla, ajot tallennettiin ja latenssit määritettiin tallenteista. Virtualisointiohjelmia ei käytetty, vaan käyttöjärjestelmiä ohjelmistoineen ajettiin laitteessa sellaisenaan. Mittauspisteet valittiin siten, että samoja voitiin käyttää kaikkien toteutusten mittauksissa. Toteutusten keskinäistä vertailua varten puskurikoon ja näytteenottotaajuuden vaikutukset vähennettiin tuloksista, jolloin jäljelle jääneiden latenssien havaittiin olevan muutaman millisekunnin sisällä toisistaan. Pienimmät latenssit mitattiin ALSAa käyttäneellä toteutuksella 96 kHz:n näytteenottotaajuudella. ALSAlla saavutettiin yleisesti paras suorituskyky, ja WASAPIllakin lähes yhtä hyvä. Suurimmat latenssiarvot mitattiin Core Audio -rajapintaa käyttäneellä toteutuksella. Lisäksi rajapintoja vertailtiin suhteessa yleisiin suunnitteluperiaatteisiin. Vertailussa huomioitiin metodien määrä ja arvioitiin käyttöönoton helppoutta ja dokumentaation saatavuutta. Suuri opeteltavien metodien määrä hidastaa rajapinnan käyttöönottoa. Rajapintojen metodit laskettiin, jolloin ALSAssa havaittiin olevan muihin rajapintoihin verrattuna huomattavasti suurempi määrä ohjelmoijalle näkyviä metodeja.

In this thesis, three popular, generally available audio programming interfaces, ALSA, Core Audio, and WASAPI, were compared. A modified real-time Karplus-Strong plucked-string model application was implemented using all three APIs. In order to compare the performances, the wavetable of the plucked-string model was effectively replaced by the unknown delay of the system. In the tests, a short burst of white noise was written to the physical audio output device of the sound card, which was hardwired with a short cable to the input port of the same device. The input stream was then acquired by the application, stored on an additional buffer for further analysis, but also sent back to the output device, in order to create a loop. The noise burst in the loop acts similarly to a string instrument after its initial excitation. As the model is run in real-time, the latency of the whole system appears as the length of the wavetable. These latencies were compared. In order to guarantee a fair comparison, the applications and corresponding operating systems were installed and run natively on the same Apple hardware, without additional virtualization layers. The runs were recorded and latencies were determined by analyzing the recordings. By compensating the known effect of buffer size and sample rate, the overhead latency characteristic of each implementation was extracted from the results. Overhead latencies were found to be within a few milliseconds. The smallest overhead latencies were measured from the ALSA implementation at 96 kHz. Overall, ALSA gave the best performance, and WASAPI was nearly as good. The largest overhead latencies were measured from the Core Audio implementation both at 44.1 kHz and 48 kHz sample rates. Additionally, the APIs were compared in terms of major existing API design recommendations. The steepness of the learning curve of an API can be estimated by counting the number of methods the programmer is exposed to. Compared with the other two, ALSA was found to expose a significantly larger number of methods.
Description
Supervisor
Välimäki, Vesa
Thesis advisor
Pihlajamäki, Tapani
Keywords
audio processing, digital signal processing, latency, digitaalinen signaalinkäsittely, latenssi, äänenkäsittely
Other note
Citation