2013-06-22 106 views
0

我正在使用Web音頻API從聲音文件中獲取frecuency數據。基本上我已經實現了這個example中顯示的代碼,我想添加它是一個gainNode,所以我可以在任何我的代碼的位置控制音量,但是我所做的連接出了問題,其他的工作都很好。爲什麼GainNode連接不能工作?

體積的部分是我從原代碼改變的唯一事情:

request.onload = function() { 
    context.decodeAudioData(
     request.response, 
     function(buffer) { 
      if(!buffer) { 
       $('#info').text('Error decoding file data'); 
       return; 
      } 

      sourceJs = context.createJavaScriptNode(2048); 
      sourceJs.buffer = buffer; 
      sourceJs.connect(context.destination); 
      analyser = context.createAnalyser(); 
      analyser.smoothingTimeConstant = 0.6; 
      analyser.fftSize = 512; 

      source = context.createBufferSource(); 
      source.buffer = buffer; 
      source.loop = true; 

      source.connect(analyser); 
      analyser.connect(sourceJs); 
      source.connect(context.destination); 

         //////////////////////////////////// 
         //////////VOLUME////////////////////        
         gainNode = context.createGain();       
         source.connect(gainNode);       
         gainNode.connect(context.destination); 
         ////////////////////////////////////// 

      sourceJs.onaudioprocess = function(e) { 
       array = new Uint8Array(analyser.frequencyBinCount); 
       analyser.getByteFrequencyData(array); 
       boost = 0; 
       for (var i = 0; i < array.length; i++) { 
        boost += array[i]; 
       } 
       boost = boost/array.length; 
      }; 



      // popup 
      //aca avisa cuando ya cargo el buffer 
     }, 
     function(error) { 
      $('#info').text('Decoding error:' + error); 
     } 
    ); 
}; 

然後我用這個關閉的卷但不工作:... gainNode.gain.value = 0 ;

回答

2

您需要增益節點是source輸出連接的唯一東西。

現在,它有多個連接,你的增益節點只是其中的一個 - 這意味着它不會影響你的整個信號。