AnalyserNode.getFloatTimeDomainData()

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');