将简单增益节点连接到Web Audio API文件缓冲区

时间:2012-11-12 00:00:19

标签: web-audio

我似乎无法理解为什么这不起作用。我没有错误。我使用振荡器做到了这一点并且工作正常。仅供参考,这是此主题的延续: Using Web Audio API to assign two sounds to two Divs and play each independently via a click event with javascript

代码:

<div id="divElement"></div>


<style> 

#divElement{
background-color: orange;
width:70px;
height:100px;
left:143px;
}

</style>

<script>

var context = new webkitAudioContext(),
    savedBuffer;

var playAudioFile = function () {
    var source = context.createBufferSource();
    var gainNode = context.createGainNode();
    source.buffer = savedBuffer;


 // START OF PROBLEM AREA: Gain not working but file still plays with no errors.

    source.connect(gainNode);           
    gainNode.connect(context.destination);
    gainNode.gain = 0;

 // END OF PROBLEM AREA

    source.noteOn(0); // Play sound immediately


};

var request = new XMLHttpRequest();

request.open('get', 'audio/A.mp3', true);
request.responseType = 'arraybuffer';

request.onload = function () {
        context.decodeAudioData(request.response,
             function(incomingBuffer) {

                 savedBuffer = incomingBuffer;

                 var divElement = document.getElementById("divElement");
                 divElement.addEventListener("click", playAudioFile , false);
             }
        );
};

request.send();

</script>

1 个答案:

答案 0 :(得分:7)

请尝试使用gainNode.gain.value = 0gainNode.gainAudioGain对象,其属性为value

http://www.w3.org/TR/webaudio/#AudioGainNode