p5.js 麦克风输入的傅里叶变换没有输出

p5.js fourier transform of mic input gives no output

我尝试使用 p5.sound 库通过以下代码分析麦克风输入的频谱。

控制台的输出只是一个array of 1024 0's,就好像他们没有声音一样。我用电脑自带的录音机软件测试了一下,是可以录音的。

所以我想我在开始记录和分析它之间遗漏了一些东西,我就是想不通是什么。

我导入了p5.js, P5.sound.js, audiosynth.js库,通过quickstaet bootstrap cdn,应该也会加载Jquery库。

var mic;
var fft;
window.onload = init;

function init() {
  mic = new p5.AudioIn();
  mic.start();
  fft = new p5.FFT();
  fft.setInput(mic);
  let frequencies = fft.analyze();
  console.log(frequencies); // always an array full of 0's
}

您可能希望 运行 在按下按钮时、经过一段时间后或每 x 秒后进行分析。这是一个简单的例子,在调用 init 后 10 秒调用分析,这应该有时间收集一些数据。

    var mic;
    var fft;

    function getFreqSpectrum() {
        let frequencies = fft.analyze();
        console.log(frequencies);
    }

    window.onload = init;

    function init() {
        mic = new p5.AudioIn();
        mic.start();
        fft = new p5.FFT();
        fft.setInput(mic);
        setTimeout(getFreqSpectrum, 10000); // do this in 10 seconds
    }