Haciendo un tutorial de mozilla. El volumen no baja cuando muevo el control deslizante a pesar de que el valor gainNode.gain.vale a cero.

Html

<input type="range" id="volume" min="0" max="2" value="1" step="0.01">

<audio src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/858/outfoxing.mp3" crossorigin="anonymous" id="basic-audio"></audio>

JAVASCRIPT

const volumeSlider = document.getElementById('volume');

const audioElement = document.getElementById('basic-audio');

const AudioContext = window.AudioContext || window.webkitAudioContext;

const audioContext = new AudioContext();

const track = audioContext.createMediaElementSource(audioElement);

track.connect(audioContext.destination);

const gainNode = audioContext.createGain();

track.connect(gainNode).connect(audioContext.destination);

volumeSlider.addEventListener('input', function() {
  gainNode.gain.value = this.value;
  console.log(gainNode.gain.value);
}, false);
0
ntf 6 may. 2020 a las 21:22

2 respuestas

Sabía que era una pregunta tonta.

En lugar de

track.connect(audioContext.destination);

Y entonces

track.connect(gainNode).connect(audioContext.destination);

Solo hazlo una vez

track.connect(gainNode).connect(audioContext.destination);
0
ntf 6 may. 2020 a las 19:08

Del referencia MDN,

La interfaz GainNode representa un cambio en el volumen.

Como su rango es de 0 a 2, eso significa que el cambio es de 0 a 2. Si desea reducir el sonido, debe aplicar valores negativos.

Intente cambiar su entrada a:

<input type="range" id="volume" min="-1" max="2" value="1" step="0.01">
0
Tecnogirl 6 may. 2020 a las 19:20