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