function Delay() {
    var _this;
    delay_classCallCheck(this, Delay);
    _this = _super.call(this);
    _this._split = _this.ac.createChannelSplitter(2);
    _this._merge = _this.ac.createChannelMerger(2);
    _this._leftGain = _this.ac.createGain();
    _this._rightGain = _this.ac.createGain();
    /**
     *  The p5.Delay is built with two
     *  <a href="http://www.w3.org/TR/webaudio/#DelayNode">
     *  Web Audio Delay Nodes</a>, one for each stereo channel.
     *
     *  @for p5.Delay
     *  @property {DelayNode} leftDelay
     */
    _this.leftDelay = _this.ac.createDelay();
    /**
     *  The p5.Delay is built with two
     *  <a href="http://www.w3.org/TR/webaudio/#DelayNode">
     *  Web Audio Delay Nodes</a>, one for each stereo channel.
     *  @for p5.Delay
     *  @property {DelayNode} rightDelay
     */
    _this.rightDelay = _this.ac.createDelay();
    _this._leftFilter = new filter();
    _this._rightFilter = new filter();
    _this._leftFilter.disconnect();
    _this._rightFilter.disconnect();
    _this._leftFilter.biquad.frequency.setValueAtTime(1200, _this.ac.currentTime);
    _this._rightFilter.biquad.frequency.setValueAtTime(1200, _this.ac.currentTime);
    _this._leftFilter.biquad.Q.setValueAtTime(0.3, _this.ac.currentTime);
    _this._rightFilter.biquad.Q.setValueAtTime(0.3, _this.ac.currentTime);

    _this.input.connect(_this._split);
    _this.leftDelay.connect(_this._leftGain);
    _this.rightDelay.connect(_this._rightGain);
    _this._leftGain.connect(_this._leftFilter.input);
    _this._rightGain.connect(_this._rightFilter.input);
    _this._merge.connect(_this.wet);
    _this._leftFilter.biquad.gain.setValueAtTime(1, _this.ac.currentTime);
    _this._rightFilter.biquad.gain.setValueAtTime(1, _this.ac.currentTime);

    _this.setType(0);
    _this._maxDelay = _this.leftDelay.delayTime.maxValue;

    _this.feedback(0.5);
    return _this;
  }
Delay is an echo effect. It processes an existing sound source,
 and outputs a delayed version of that sound. The p5.Delay can
 produce different effects depending on the delayTime, feedback,
 filter, and type. In the example below, a feedback of 0.5 (the
 default value) will produce a looping delay that decreases in
 volume by 50% each repeat. A filter will cut out the high
 frequencies so that the delay does not sound as piercing as the
 original source.


 This class extends <a href = "/reference/#/p5.Effect">p5.Effect</a>.
 Methods <a href = "/reference/#/p5.Effect/amp">amp()</a>, <a href = "/reference/#/p5.Effect/chain">chain()</a>,
 <a href = "/reference/#/p5.Effect/drywet">drywet()</a>, <a href = "/reference/#/p5.Effect/connect">connect()</a>, and
 <a href = "/reference/#/p5.Effect/disconnect">disconnect()</a> are available.
 @class p5.Delay
 @extends p5.Effect
 @constructor
 @example
 <div><code>
 let osc;

 function setup() {
   let cnv = createCanvas(100, 100);
   background(220);
   textAlign(CENTER);
   text('tap to play', width/2, height/2);

   osc = new p5.Oscillator('square');
   osc.amp(0.5);
   delay = new p5.Delay();

   // delay.process() accepts 4 parameters:
   // source, delayTime (in seconds), feedback, filter frequency
   delay.process(osc, 0.12, .7, 2300);

   cnv.mousePressed(oscStart);
 }

 function oscStart() {
   osc.start();
 }

 function mouseReleased() {
   osc.stop();
 }
 </code></div>