White Noise Example

by Aqilah Misuary

HTML

<title>AudioBuffer example</title>

    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
  

    <h1>AudioBuffer example</h1>
    <button>Make white noise</button>

JavaScript

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var button = document.querySelector('button');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');

var input = audioCtx.createGain();
var feedback = audioCtx.createGain();
var delay = audioCtx.createDelay();
var leftDelay = audioCtx.createDelay();
var rightDelay = audioCtx.createDelay();
var outputmix = audioCtx.createGain();

var errorCallback = function(e) {
  alert("Error in getUserMedia: " + e);
};  
// Check if there is microphone input.
try {
  navigator.getUserMedia = navigator.getUserMedia ||
                           navigator.webkitGetUserMedia ||
                           navigator.mozGetUserMedia ||
                           navigator.msGetUserMedia;
  var hasMicrophoneInput = (navigator.getUserMedia || navigator.webkitGetUserMedia ||
      navigator.mozGetUserMedia || navigator.msGetUserMedia);
} catch(e) {
  alert("getUserMedia() is not supported in your browser");
}

navigator.getUserMedia({audio: true}, function(stream) {
 // microphone -> myPCMProcessingNode -> destination.
  var microphone = audioCtx.createMediaStreamSource(stream);
	
	var scriptNodes = {};
var keep = (function () {
    var nextNodeID = 1;
    return function (node) {
        node.id = node.id || (nextNodeID++);
        scriptNodes[node.id] = node;
        return node;
    };
}());
	
	var scriptNode = keep(audioCtx.createScriptProcessor());
	
	scriptNode.onaudioprocess = function(audioProcessingEvent) {
  // The input buffer is the song we loaded earlier
  var inputBuffer = audioProcessingEvent.inputBuffer;

  // The output buffer contains the samples that will be modified and played
  var outputBuffer = audioProcessingEvent.outputBuffer;

  // Loop through the output channels (in this case there is only one)
  for (var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
    var inputData =...