В настоящее время я делаю визуализатор децибел-метра, используя JavaScript, HTML и CSS.
Я изучил несколько руководств по API веб-аудио, но ничего из них не было близко к тому, что я хочу сделать.
Это то, что у меня есть до сих пор:
window.onload = init;
function init() {
var ctx = new webkitAudioContext()
, url = 'https://dl.dropboxusercontent.com/u/86176287/pbjt.mp3'
, audio = new Audio(url)
// 2048 sample buffer, 1 channel in, 1 channel out
, processor = ctx.createJavaScriptNode(2048, 1, 1)
, meter = document.getElementById('meter')
, source;
audio.addEventListener('canplaythrough', function(){
source = ctx.createMediaElementSource(audio);
source.connect(processor);
source.connect(ctx.destination);
processor.connect(ctx.destination);
audio.play();
}, false);
// loop through PCM data and calculate average
// volume for a given 2048 sample buffer
processor.onaudioprocess = function(evt){
var input = evt.inputBuffer.getChannelData(0)
, len = input.length
, total = i = 0
, rms;
while ( i < len ) total += Math.abs( input[i++] );
rms = Math.sqrt( total / len );
meter.style.width = ( rms * 100 ) + '%';
};
}
Может кто-нибудь объяснить, что мне нужно делать, или указать мне правильное направление, так как это, похоже, не работает?
rms
тем, что вы ожидаете (между -1 и 1), или вам просто нужна формула для преобразования в дБ? - person jaket   schedule 26.01.2015