Web Audio API

Web Audio API on JavaScript ohjelmointirajapinta (API), joka mahdollistaa äänen prosessoinnin ja syntetisoinnin verkkosovelluksissa.

 Historia 
HTML5 julkaisun mukana tullut <audio>-elementti mahdollisti yksinkertaisen äänentoiston nettisivuilla, mutta tämä ei riittänyt monipuolisempiin tarkoituksiin kuten verkkopeleihin ja interaktiivisiin nettisivuihin. Ennen tätä, äänenkäsittely nettisivuilla tehtiin pääasiassa kolmansien osapuolien työkaluilla kuten Flash, mutta natiiville ratkaisulle oli tarvetta. Ongelman ratkaistakseen W3C (World Wide Web Consortium) julkaisi ensimmäisen version Web Audio API:sta vuonna 2011.

 Ominaisuudet 

 Modulaarinen reititys 
Modulaarinen reititys mahdollistaa AudioNode-rajapintojen yhdistämisen keskenään. AudioNodet ovat Web Audio API:n päätoimintaperiaate, jolla muodostetaan efektiketju äänen prosessointia varten. Jokaisella AudioNodella on syöte ja ulostulo, paitsi äänilähteellä eli AudioBufferSourceNode:lla ja äänikohteella eli AudioDestinationNode:lla. AudioBufferSourceNode on reitityksen alku, eli sillä on pelkkä ulostulo, kun taas DestinationNode edustaa reitityksen päätyä, eli se ottaa vastaan vain syötteen. Näiden väliin voidaan asettaa erilaisia äänen prosessointiin tarkoitettuja AudioNode:ja, jolla sitten muokataan signaalia.

Lista Web Audio Api:n eri rajapinnoista:

 AudioContext, joka sisältää AudioNode:jen yhteyksiä kuvaavan äänisignaalikaavion. Tämä on käytännössä pohja, johon haluttu reititys luodaan.
 AudioBufferSourceNode, joka luo äänen annetusta AudioBuffer-rajapinnasta. 
 AudioDestinationNode, joka edustaa käsitellyn äänen lopullista kohdetta.
 GainNode, jolla voidaan säätää signaalin äänenvoimakkuutta.
 BiquadFilterNode, joka mahdollistaa äänen digitaalisen suodattamisen eli käytännössä toimii taajuskorjaimena.

 Matala viive 
Web Audio API on rakennettu tukemaan matalaa viivettä, ja W3C kertoo kohtuullisen viiveen heittävän 3-50 millisekunnin välillä. Tämä on hyödyllistä varsinkin musiikki- ja pelisovelluksissa, jossa matala viive on olennaista luomaan sulava käyttäjäkokemus.

 Lähteet 

Luokka:Ohjelmointirajapinnat
Luokka:JavaScript