text: /**
   * noise parametrized noise node
   *
   * [See more noise examples](examples/noise.html)
   *
   * @plugin
   * @category Noise
   * @function
   * @memberof cracked
   * @name cracked#noise
   * @public
   * @param {Object} [params] map of optional values
   * @param {String} [params.type=white]
   */
  cracked.noise = function (params) {
      var userParams = params || {};
      if (userParams.type === "brown") {
          __.begin("noise", userParams).brown(userParams).end("noise");
      } else if (userParams.type === "pink") {
          __.begin("noise", userParams).pink(userParams).end("noise");
      } else {
          __.begin("noise", userParams).white(userParams).end("noise");
      }
      return cracked;
  };
  
  /**
   * Pink Noise
   *
   * [See more noise examples](examples/noise.html)
   *
   * @plugin
   * @category Noise
   * @function
   * @memberof cracked
   * @name cracked#pink
   * @public
   * @param {Object} [params] map of optional values
   * @param {Number} [params.channels=1]
   * @param {Number} [params.length=1]
   */
  cracked.pink = function (params) {
  //http://noisehack.com/generate-noise-web-audio-api/
      var userParams = params || {};
      var channels = userParams.channels || 1;
      var length = userParams.length || 1;
  
      __().begin("pink", userParams).buffer({
          fn: buildBuffer,
          loop: true
      }).end("pink");
  
      return cracked;
  
      function buildBuffer(audioContext) {
  
          var buf = audioContext.createBuffer(channels, (length * audioContext.sampleRate), audioContext.sampleRate);
          var buflen = buf.length;
          var bufNum = buf.numberOfChannels;
          var buffArr = []; //call only once and cache
  
          for (var k = 0; k < bufNum; k++) {
              buffArr.push(buf.getChannelData(k));
          }
  
          for (var i = 0; i < buflen; i++) {
              for (var j = 0; j < bufNum; j++) {
                  buffArr[j][i] = Math.random() * 2 - 1;
              }
          }
  
          pinkify(buf, buffArr);
  
          function pinkify(buf, buffArr) {
              var buffer = buf,
                  b = [0, 0, 0, 0, 0, 0, 0],
                  channelData, white, i, j, pink = [],
                  bufNum = buffer.numberOfChannels, buflen = buffer.length;
              for (i = 0; i < bufNum; i++) {
                  pink[i] = new Float32Array(buflen);
                  channelData = buffArr[i];
                  for (j = 0; j < buflen; j++) {
                      white = channelData[j];
                      b[0] = 0.99886 * b[0] + white * 0.0555179;
                      b[1] = 0.99332 * b[1] + white * 0.0750759;
                      b[2] = 0.96900 * b[2] + white * 0.1538520;
                      b[3] = 0.86650 * b[3] + white * 0.3104856;
                      b[4] = 0.55000 * b[4] + white * 0.5329522;
                      b[5] = -0.7616 * b[5] - white * 0.0168980;
                      pink[i][j] = b[0] + b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + white * 0.5362;
                      pink[i][j] *= 0.11;
                      b[6] = white * 0.115926;
                  }
                  b = [0, 0, 0, 0, 0, 0, 0];
              }
  
              for (i = 0; i < bufNum; i++) {
                  for (j = 0; j < buflen; j++) {
                      buffArr[i][j] = pink[i][j];
                  }
              }
  
          }
  
          return buf;
      }
  };
  /**
   * White Noise
   *
   * [See more noise examples](examples/noise.html)
   *
   * @plugin
   * @category Noise
   * @function
   * @memberof cracked
   * @name cracked#white
   * @public
   * @param {Object} [params] map of optional values
   * @param {Number} [params.channels=1]
   * @param {Number} [params.length=1]
   */
  cracked.white = function (params) {
  //http://noisehack.com/generate-noise-web-audio-api/
      var userParams = params || {};
      var channels = userParams.channels || 1;
      var length = userParams.length || 1;
  
      __().begin("white", userParams).buffer({
          fn: buildBuffer,
          loop: true
      }).end("white");
  
      return cracked;
  
      function buildBuffer(audioContext) {
          var buffer = audioContext.createBuffer(channels, (length * audioContext.sampleRate), audioContext.sampleRate);
          var buflen = buffer.length;
          var bufNum = buffer.numberOfChannels;
          var buffArr = []; //call only once and cache
  
          for (var k = 0; k < bufNum; k++) {
              buffArr.push(buffer.getChannelData(k));
          }
  
          for (var i = 0; i < buflen; i++) {
              for (var j = 0; j < bufNum; j++) {
                  buffArr[j][i] = (Math.random() * 2 - 1) * 0.44;
              }
          }
          return buffer;
      }
  };
  
  /**
   * Brown Noise
   *
   * [See more noise examples](examples/noise.html)
   *
   * @plugin
   * @category Noise
   * @function
   * @memberof cracked
   * @name cracked#brown
   * @public
   * @param {Object} [params] map of optional values
   * @param {Number} [params.channels=1]
   * @param {Number} [params.length=1]
   */
  cracked.brown = function (params) {
  //http://noisehack.com/generate-noise-web-audio-api/
      var userParams = params || {};
      var channels = userParams.channels || 1;
      var length = userParams.length || 1;
  
      __().begin("brown", userParams).buffer({
          fn: buildBuffer,
          loop: true
      }).end("brown");
  
      return cracked;
  
      function buildBuffer(audioContext) {
          var buffer = audioContext.createBuffer(channels, (length * audioContext.sampleRate), audioContext.sampleRate),
              lastOut = 0.0, bufLen = buffer.length, bufNum = buffer.numberOfChannels;
  
          var buffArr = []; //call only once and cache
  
          for (var k = 0; k < bufNum; k++) {
              buffArr.push(buffer.getChannelData(k));
          }
  
          for (var i = 0; i < bufLen; i++) {
              for (var j = 0; j < bufNum; j++) {
                  var white = Math.random() * 2 - 1;
                  buffArr[j][i] = (lastOut + (0.02 * white)) / 1.02;
                  lastOut = buffArr[j][i];
                  buffArr[j][i] *= 3.5; // (roughly) compensate for gain
              }
          }
          return buffer;
      }
  
  };