Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将音频数据转换为波形数据?_Javascript_Html_Math_Audio_Canvas - Fatal编程技术网

Javascript 将音频数据转换为波形数据?

Javascript 将音频数据转换为波形数据?,javascript,html,math,audio,canvas,Javascript,Html,Math,Audio,Canvas,我不明白如何将其转化为具有峰值的波形可视化 我看到该文件中的数据是一个简单的数字数组。我试图理解如何将这些数字转换成对视觉绘图有意义的东西 看看这把小提琴,可以更深入地了解代码 目标是创建具有与图像相似的高和低的峰值。我假设每2个索引代表一个峰值,但我不想做任何假设 我拉取JSON并像这样将其传递到draw函数中 const peaksReq = await fetch( "https://raw.githubusercontent.com/bbc/peaks.js/ma

我不明白如何将其转化为具有峰值的波形可视化

我看到该文件中的数据是一个简单的数字数组。我试图理解如何将这些数字转换成对视觉绘图有意义的东西

看看这把小提琴,可以更深入地了解代码

目标是创建具有与图像相似的高和低的峰值。我假设每2个索引代表一个峰值,但我不想做任何假设

我拉取JSON并像这样将其传递到draw函数中

  const peaksReq = await fetch(
    "https://raw.githubusercontent.com/bbc/peaks.js/master/demo/TOL_6min_720p_download.json"
  );
  const peaksData = await peaksReq.json();
  const peaks = peaksData.data;

  // peaks is now a flat array of numbers
我们的目标是将平顶阵列变成如上图所示的条形。第一组数据是一组0,最终一个有意义的序列看起来像这样
[-7,5,-27,25,-30,26,-29,30,-24,26]

我的理解是——一个猜测是把它转换成一个2d数组,像这样
[-7,5],-27,25],-30,26],-29,30],-24,26],
然后将这些数字转换成适合边界的px<代码>-7,5将相对于中心公理上下移动


我不太明白如何解决的问题是,如果它在一个40px元素中,我们如何保持这些数字的相对性。i、 e 40px的中心是20px。在40px空间中,一个条可以向上移动而不会超出边界的最大值是20px,你可以添加一个5px的缓冲区,然后说15px。

扩展我关于获得最大值和最小值的评论,然后让我们得到一个相对值,我按照你的建议做15px边界,所以中心为0,上限为15px,下界-15px将用于我们的计算

以下是我们可以做的:

async函数start(){
const peaksReq=等待获取(
"https://raw.githubusercontent.com/bbc/peaks.js/master/demo/TOL_6min_720p_download.json"
);
const peaksData=wait peaksReq.json();
const peaks=peaksData.data;
常量最大值=数学最大值(…峰值)
console.log(最大值为15)
常数min=Math.min(…峰值)
控制台日志(最小-15)
console.log(“--------------”)
for(设i=801;i<805;i++){
设val=峰值[i]*15/最大值
如果(峰值[i]<0)
val=峰值[i]*-15/分钟
val=数学四舍五入(val*10)/10
console.log(峰值[i],val)
} 
}

start()
听起来像是简单的数学。。。从数字数组中获取最大值和最小值,这将是你的相对最大值和最小值。其他所有内容都是其中的一个百分比。是的,但我很笨,需要向我或参考人解释。L,你不笨,我以前帮过你一个类似的问题:。。。让我们看看是否可以把这个放在代码示例中。谢谢你花时间这么做。我正在我的头脑中经历它。。。有一件事我不确定,那就是如何成对地画出顶点,一个是酒吧的顶点,一个是酒吧的底点。@MichaelJosephAubry这里是我要做的:哦,太漂亮了。。非常感谢你。。我在哪里可以了解更多关于数据频率如何工作的信息。我将学习以下代码:)对不起,我不是数据频率方面的专家,这个问题看起来就像简单的数学问题,如果你需要专业服务,请在gmail上给我打电话