AnalyserNode.getByteTimeDomainData() - копіює поточну форму хвилі сигналу у масив Uint8Array.
AnalyserNode.getByteTimeDomainData(array);
AnalyserNode - об'єкти AnalyserNode.
array - змінна, масив типу Uint8Array в який буде скопійовані дані поточної форми хвилі сигналу.
getByteTimeDomainData() метод об'єкта AnalyserNode який копіює поточну форму хвилі сигналу у масив Uint8Array.
Якщо потрібна більша точнісь і менша продуктивність тоді використовуйте метод AnalyserNode.getFloatTimeDomainData().
if(window.AudioContext){
var div=document.getElementById('results');
var audio = new AudioContext();
var player = document.getElementById('player');
var source = audio.createMediaElementSource(player);
var analis=audio.createAnalyser();
source.connect(analis);
analis.connect(audio.destination);
analis.fftSize=32;
mas = new Uint8Array(analis.frequencyBinCount);
function draw(){
analis.getByteTimeDomainData(mas);
for(var i=0,s='';i<mas.length;i++)
s+=' '+mas[i];
div.innerHTML=s;
setTimeout(draw,50);
}
draw();
player.play();
}else alert('Ваш браузер не підтримує Web Audio');
<canvas id="canvas2"></canvas>
<audio id="player2" src="/dani/test.ogg"></audio>
if(window.AudioContext){
audio2 = new AudioContext();
player2 = document.getElementById('player2');
source2 = audio2.createMediaElementSource(player2);
analis2=audio2.createAnalyser();
canvas2=document.getElementById('canvas2');
ctx2=canvas2.getContext('2d');
source2.connect(analis2);
analis2.connect(audio2.destination);
analis2.fftSize=128;
dani2 = new Uint8Array(analis2.frequencyBinCount);
draw2=function(){ //функція яка відображає отримані дані частот на полотні canvas
analis2.getByteTimeDomainData(dani2);
ctx2.fillStyle='black';
ctx2.fillRect(0, 0, canvas2.width, canvas2.height);
ctx2.lineWidth=2;
ctx2.strokeStyle='red';
ctx2.beginPath();
var w=canvas2.width/dani2.length;
ctx2.moveTo(x,dani2[i-2]);
for(var i=1,x=0;i<dani2.length;i++,x+=w){
ctx2.lineTo(x,dani2[i]);
}
ctx2.lineTo(x+w,dani2[i-2]);
ctx2.stroke();
setTimeout(draw2,50); //або requestAnimationFrame(draw)
}
draw2();
player2.play();
}else alert('Ваш браузер не підтримує Web Audio');
if(window.AudioContext){
var audio3 = new AudioContext();
var player3 = document.getElementById('player3');
var source3 = audio3.createMediaElementSource(player3);
var analis3=audio3.createAnalyser();
var canvas3=document.getElementById('canvas3');
var ctx3=canvas3.getContext('2d');
source3.connect(analis3);
analis3.connect(audio3.destination);
analis3.fftSize=64;
dani3 = new Uint8Array(analis3.frequencyBinCount);
function draw3(){ //функція яка відображає отримані дані частот на полотні canvas
analis3.getByteTimeDomainData(dani3);
ctx3.fillStyle='black';
ctx3.fillRect(0, 0, canvas3.width, canvas3.height);
ctx3.fillStyle='red';
var w=Math.ceil(canvas3.width/dani3.length);
for(var i=0,x=0;i<dani3.length;i++,x+=w)
ctx3.fillRect(x,dani3[i],w,canvas3.height);
setTimeout(draw3,50);
}
draw3();
player3.play();
}else alert('Ваш браузер не підтримує Web Audio');