没有获得webaudio-api中的频率值

时间:2017-04-22 09:47:27

标签: web-audio frequency-analysis web-audio-api

我正在使用来自github的这个spectrogram.js来绘制频谱图并实时获得频率值。 Github Repo

我已经写了这个额外的stopSong函数:

function stopSong() {
 var analyser = audioContext.createAnalyser();
 var ctx = new AudioContext();
  var osc = ctx.createOscillator();
  osc.connect(ctx.destination);
  osc.start(0);



spectro.stop();
 var freqData= new Uint8Array(analyser.frequencyBinCount);
 analyser.getByteFrequencyData(freqData);
 //var f = Math.round(freqData[1]);
 //  var text = f + ' Hz';
  var idx = 0;
                for (var j=0; j < analyser.frequencyBinCount; j++) {
                    if (freqData[j] > freqData[idx]) {
                        idx = j;
                    }
                }
   var frequency = idx * ctx.sampleRate / analyser.fftSize;
                console.log(frequency);



  //document.getElementById("frec").innerHTML = text;


             }

但每次我运行它时都会输出0作为输出。任何人都可以告诉我的代码有什么问题。

1 个答案:

答案 0 :(得分:0)

您需要将oscillatoranalyser

相关联

oscillator.connect(analyser);

此外,您可能需要多次致电getByteFrequencyData,可能会在requestAnimationFrame或类似setTimeout