Подключение простого узла усиления к файловым буферам Web Audio API

Я не могу понять, почему это не работает. У меня нет ошибок. Я сделал это с помощью осцилляторов, и все работает нормально. К вашему сведению, это продолжение этой темы: Использование API веб-аудио для назначения двух звуков двум элементам Div и воспроизведения каждого из них независимо с помощью события щелчка с помощью 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>

person William    schedule 12.11.2012    source источник


Ответы (1)


Вместо этого попробуйте gainNode.gain.value = 0. gainNode.gain — это объект AudioGain с атрибутом value.

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

person Achal Dave    schedule 12.11.2012