text: /*
   *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license
   *  that can be found in the LICENSE file in the root of the source
   *  tree.
   */
  
  'use strict';
  
  // Meter class that generates a number correlated to audio volume.
  // The meter class itself displays nothing, but it makes the
  // instantaneous and time-decaying volumes available for inspection.
  // It also reports on the fraction of samples that were at or near
  // the top of the measurement range.
  export default class SoundMeter {
      constructor(context) {
          this.context = context;
          this.instant = 0.0;
          //this.slow = 0.0;
          //this.clip = 0.0;
          this.script = context.createScriptProcessor(2048, 1, 1);
          let that = this;
          this.script.onaudioprocess = function (event) {
              let input = event.inputBuffer.getChannelData(0);
              let i;
              let sum = 0.0;
              let clipcount = 0;
              for (i = 0; i < input.length; ++i) {
                  sum += input[i] * input[i];
                  if (Math.abs(input[i]) > 0.99) {
                      clipcount += 1;
                  }
              }
              that.instant = Math.sqrt(sum / input.length);
              //that.slow = 0.95 * that.slow + 0.05 * that.instant;
              //that.clip = clipcount / input.length;
          };
      }
  
      connectToSource(stream) {
          this.mic = this.context.createMediaStreamSource(stream);
          this.mic.connect(this.script);
          // necessary to make sample run, but should not be.
          this.script.connect(this.context.destination);
      };
  
      stop() {
          this.mic.disconnect();
          this.script.disconnect();
      };
  }