1.3. API Web Audio
1.3.3. Exemples
Ara anem a veure un primer exemple molt simple en què definirem un oscil·lador i l’enviarem a la sortida per aturar el so al cap de 2 segons.
var context = new (window.AudioContext || window.webkitAudioContext)(); // creating oscillator node var oscillator = context.createOscillator(); // configuration oscillator oscillator.type = ' sawtooth'; oscillator.frequency.value = 440; // connecting to the destination oscillator.connect(context.destination); oscillator.start(); // stop oscillator after 2 seconds setTimeout(() => { oscillator.stop(); }, 2000) }
Creem un context d’àudio amb:
var context = new (window.AudioContext || window.webkitAudioContext)();
Definim el context amb el prefix webkit
perquè Safari ho requereix i d’aquesta manera la farem compatible amb tots els navegadors.
Després hem creat el node oscil·lador amb el mètode createOscillator()
.
Li assignem, amb la propietat type
el tipus 'sawtooth'
que correspon a una ona en forma de dent de serra. Amb frecuency.value
li assignem una freqüència de 440 Hz.
Finalment, connectem amb el mètode, connect()
l’oscil·lador amb la destinació final que habitualment és la sortida d’àudio del dispositiu on s’executa. Després amb el mètode start()
farem que es reprodueixi el so que aturarem amb el mètode stop()
2 segons després.
En el segon exemple introduirem un node de processament entre l’oscil·lador i la sortida. El node gain
serveix per canviar el volum de l’àudio.
var context = new (window.AudioContext || window.webkitAudioContext)(); // creating oscillator and gain nodes var oscillator = context.createOscillator(); var gain = context.createGain(); // connecting oscillator to gain oscillator.connect(gain); // configuration oscillator oscillator.type = 'sawtooth'; oscillator.frequency.value = 440; // setting volume to 20% gain.gain.setValueAtTime(0.2, 0); // connecting to the destination gain.connect(context.destination); oscillator.start(); setTimeout(() => { oscillator.stop(); }, 2000); }
Primer es crearà el node de forma similar a la creació del node de l’oscil·lador amb createGain()
. Després es connecta l’oscil·lador al node gain
amb connect()
.
Amb gain.gain.setValueAtTime(0.2, 0)
determinem que el volum resultant sigui del 20 % i que s’executi immediatament.
Finalment, connectem el node gain
amb la sortida.
Només han estat dues breus i senzilles pinzellades a l’API Web Audio. Les possibilitats de desenvolupament són moltes i requeririen un capítol o llibre per al seu estudi complet. Aquesta API ha estat fonamental per a la creació d’experiències auditives immersives al web, des de jocs en línia i aplicacions interactives fins a seqüenciadors de música i obres d’art sonores.
La seva capacitat per manipular l’àudio en temps real i per oferir un control precís sobre cada aspecte del so ha permès als desenvolupadors explorar noves fronteres en la integració de l’àudio en línia.
Trobareu informació actualitzada de l’API Web Audio a: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API