JS声谱图绘制:从缓冲区切换到完整文件?

时间:2016-05-30 13:59:31

标签: javascript audio spectrogram

对于副项目,我使用以下JS插件在浏览器中绘制音频文件的频谱图:

https://www.npmjs.com/package/spectrogram

var spectrogram = require('spectrogram');

var spectro = Spectrogram(document.getElementById('canvas'), {
  audio: {
    enable: false
  }
});

var audioContext = new audioContext();
var request = new XMLHttpRequest();
request.open('GET', 'audio.mp3', true);
request.responseType = 'arraybuffer';

request.onload = function() {
  audioContext.decodeAudioData(request.response, function(buffer) {
    spectro.addSource(buffer, audioContext);
    spectro.start();
  });
};

request.send();

(此处提供演示:https://lab.miguelmota.com/spectrogram/example/

但是,当前的代码和示例将“逐行”绘制频谱图,因为声音当前正在通过缓冲区播放。

我想知道是否有办法实际读取文件,然后立即绘制整个频谱图?我尝试将数组缓冲区转换为blob,但其余的函数实际上期望声音被缓冲...

所以我的问题是:有没有办法实现我正在寻找的东西? (立即绘制满谱谱图,而不是缓冲音频并“随时随地”绘制它

有没有更简单的方法来实现我正在寻找的东西?

感谢您的时间和帮助。

0 个答案:

没有答案