MediaStreamAudioDestinationNode - об'єкт для перетворення вхідного аудіо сигналу в медіа потік.
var destination = AudioContext.createMediaStreamAudioDestination();
destination - змінна якій присвоюється об'єкт MediaStreamAudioDestinationNode.
AudioContext - AudioContext.
MediaStreamAudioDestinationNode об'єкт який представляє собою аудіо вузол для перетворення вхідного аудіо звуку в медіа потік MediaStream.
var audio = new AudioContext();
var destination = audio.createMediaStreamDestination();
alert(destination);
Даний приклад наглядно показує перетворення аудіо звуку в медіа потік (MediaStream) і зворотньо потік в аудіо звук:
var audio=new AudioContext();
var oscilator=audio.createOscillator();
var dest=audio.createMediaStreamDestination(); //об'єкт для перетворення аудіо звуку в медіо потік
var source=audio.createMediaStreamSource(dest.stream); //об'єкт для перетворення медіа потоку в аудіо звук з вказаним потоком від MediaStreamDestinationNode
oscilator.connect(dest);
source.connect(audio.destination);
oscilator.start(); //відтворюємо осцилятор
oscilator.stop(3);//зупиняємо осцилятор через 3 секунди
Приклад запису звуку з осцилятор передачі його елементу audio:
var sound=[]; //масив куди будемо записувати сам звук
var audio = new AudioContext();
var osc = audio.createOscillator();
var dest = audio.createMediaStreamDestination(); //створюєсо о'бєкт MediaStreamAudioDestinationNode
var mediaRecorder = new MediaRecorder(dest.stream); //об'єкт для запису звуку з вказаним потоком з MediaStreamAudioDestinationNode
mediaRecorder.ondataavailable=function(evt){sound.push(evt.data); /*додаємо звку у масив*/ }
mediaRecorder.onstop = function(evt){
var blob = new Blob(sound,{'type':'audio/ogg; codecs=opus'}); //створюємо дані типу audio/ogg з масиву sound
var audioElement=document.getElementById("audio_element");
audioElement.src=URL.createObjectURL(blob); //присвоюємо записані дані звуку елементу audio
audioElement.setAttribute('controls','true'); //відображаємо панель керування
};
osc.connect(dest);
osc.start(); //відтворюємо звуку з осцилятора
mediaRecorder.start(); //починаємо запис звуку
function playOscilator(index){ //функція яка змінює частоти в осциляторі
var hz=[1000,9650,3200,4600,1600,4300]; //масив з частотами Гц
if(index==undefined)index=0;
if(index>hz.length-1){
mediaRecorder.stop(); //зупиняємо запис звуку
osc.stop(); //зупиняємо осцилятор
}else{
osc.frequency.value=hz[index]; //змінюємо частоту звуку осцилятора
setTimeout(playOscilator,400,index+1);
}
}
playOscilator();