如何在javascript web音频api中获取声能?

如何在javascript web音频api中获取声能?,javascript,html5-audio,web-audio-api,Javascript,Html5 Audio,Web Audio Api,我想创建一个JS库来检测歌曲BPM。 我读过这篇文章并理解了算法。 这是获得10秒声能数据的正确方法吗?我是个新手。如果您不理解代码的某些部分,请询问 var audioFileInput=document.querySelector(“#音频文件输入”); var audioCtx=新的AudioContext(); //对audioFileInput中的“更改”事件调用countBpm函数 audioFileInput.onchange=函数(){ var file=this.files[

我想创建一个JS库来检测歌曲BPM。
我读过这篇文章并理解了算法。
这是获得10秒声能数据的正确方法吗?我是个新手。如果您不理解代码的某些部分,请询问

var audioFileInput=document.querySelector(“#音频文件输入”);
var audioCtx=新的AudioContext();
//对audioFileInput中的“更改”事件调用countBpm函数
audioFileInput.onchange=函数(){
var file=this.files[0];
var reader=new FileReader();
reader.onload=函数(){
countBpm(reader.result)
};
reader.readAsArrayBuffer(文件);
};
函数countBpm(缓冲区){
audioCtx.decodeAudioData(缓冲区、函数(decodedData){
var dataFromLeftChannel=getSoundDataFromMiddle(decodedData,“左”);
var dataFromRightChannel=getSoundDataFromMiddle(decodedData,“right”);
console.dir(dataFromLeftChannel);
console.dir(dataFromRightChannel);
//检测bpm的代码将显示在此处
})
};
//从通道获取10秒声能数据
函数getSoundDataFromMiddle(解码数据,通道){
var位置={};
positions.start=(decodedData.length/2)-220500;
positions.end=(decodedata.length/2)+220500;
如果(通道==‘左’){
返回decodedData.getChannelData(0).子数组(positions.start,positions.end);
}else if(通道===‘右’){
返回decodedData.getChannelData(1).子数组(positions.start,positions.end);
}否则{
返回null;
}
}

我想你指的是浏览器javascript。从阅读Web音频Api、AudioContext等开始。即使问题很有趣。。。这基本上是一个“请为我写一些代码”的问题。如果所涉及的技术非常新,那么您如何能够理解这些代码呢?另外,你的问题完全依赖于一篇可能有一天会落下的外部文章,这使得你的问题毫无用处。。。你能改进它并显示任何(代码)吗?@Eloims,我在帖子中添加了我的代码。@RokoC.Buljan,我在帖子中添加了我的代码。请检查。bpm标记用于业务流程管理。不是每分钟拍数。