function Effect() {
    effect_classCallCheck(this, Effect);
    this.ac = main.audiocontext;
    this.input = this.ac.createGain();
    this.output = this.ac.createGain();

    /**
     *	The p5.Effect class is built
     * 	using Tone.js CrossFade
     * 	@private
     */

    this._drywet = new CrossFade_default.a(1);

    /**
     *	In classes that extend
     *	p5.Effect, connect effect nodes
     *	to the wet parameter
     */
    this.wet = this.ac.createGain();
    this.input.connect(this._drywet.a);
    this.wet.connect(this._drywet.b);
    this._drywet.connect(this.output);
    this.connect();

    main.soundArray.push(this);
  }
Effect is a base class for audio effects in p5. <br>
This module handles the nodes and methods that are
common and useful for current and future effects.


This class is extended by <a href="/reference/#/p5.Distortion">p5.Distortion</a>,
<a href="/reference/#/p5.Compressor">p5.Compressor</a>,
<a href="/reference/#/p5.Delay">p5.Delay</a>,
<a href="/reference/#/p5.Filter">p5.Filter</a>,
<a href="/reference/#/p5.Reverb">p5.Reverb</a>,
<a href="/reference/#/p5.EQ">p5.EQ</a>,
<a href="/reference/#/p5.Panner">p5.Panner</a>.
<a href="/reference/#/p5.Panner3D">p5.Panner3D</a>.

@class  p5.Effect
@constructor

@param {Object} [ac]   Reference to the audio context of the p5 object
@param {AudioNode} [input]  Gain Node effect wrapper
@param {AudioNode} [output] Gain Node effect wrapper
@param {Object} [_drywet]   Tone.JS CrossFade node (defaults to value: 1)
@param {AudioNode} [wet]  Effects that extend this class should connect
                             to the wet signal to this gain node, so that dry and wet
                             signals are mixed properly.