adjust gain

by jib1

HTML

<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<audio id="audio" controls autoplay></audio><br>
<button onclick="start()">Start!</button><div id="div"></div>

JavaScript

var start = () => navigator.mediaDevices.getUserMedia({audio: true})
  .then(stream => audio.srcObject = modifyGain(stream, 2.5))
  .catch(e => log(e));

var modifyGain = (stream, gainValue) => {
  var ctx = new AudioContext();
  var src = ctx.createMediaStreamSource(stream);
  var dst = ctx.createMediaStreamDestination();
  var gainNode = ctx.createGain();
  gainNode.gain.value = gainValue;
  [src, gainNode, dst].reduce((a, b) => a && a.connect(b));
  return dst.stream;
};

var log = msg => div.innerHTML += "<br>" + msg;