2017-04-22 151 views
0

我使用github中的这个spectrogram.js绘制频谱图并实时获取频率值。 Github Repo未在webaudio-api中获取频率值

我写了这个额外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作为输出。任何人都可以告诉我的代码有什么问题。

回答

0

您需要的oscillator连接到analyser

oscillator.connect(analyser);

而且你可能想打电话给getByteFrequencyData多次,也许在​​,或类似的东西setTimeout

+0

它不工作,我试过。 –