function Convolver(path, callback, errorCallback) {
    var _this2;
    reverb_classCallCheck(this, Convolver);
    _this2 = _super2.call(this);
    /**
     *  Internally, the p5.Convolver uses the a
     *  <a href="http://www.w3.org/TR/webaudio/#ConvolverNode">
     *  Web Audio Convolver Node</a>.
     *
     *  @property {ConvolverNode} convolverNode
     */
    _this2._initConvolverNode();

    _this2.input.gain.value = 0.5;
    if (path) {
      _this2.impulses = [];
      _this2._loadBuffer(path, callback, errorCallback);
    } else {
      _this2._seconds = 3;
      _this2._decay = 2;
      _this2._reverse = false;
      _this2._buildImpulse();
    }

    /**
     *  If you load multiple impulse files using the .addImpulse method,
     *  they will be stored as Objects in this Array. Toggle between them
     *  with the <code>toggleImpulse(id)</code> method.
     *
     *  @property {Array} impulses
     *  @for p5.Convolver
     */
    _this2.impulses = [];
    _this2.set = null;
    return _this2;
  }
<p>p5.Convolver extends p5.Reverb. It can emulate the sound of real
 physical spaces through a process called <a href="
 https://en.wikipedia.org/wiki/Convolution_reverb#Real_space_simulation">
 convolution</a>.</p>

 <p>Convolution multiplies any audio input by an "impulse response"
 to simulate the dispersion of sound over time. The impulse response is
 generated from an audio file that you provide. One way to
 generate an impulse response is to pop a balloon in a reverberant space
 and record the echo. Convolution can also be used to experiment with
 sound.</p>

 <p>Use the method <code>createConvolution(path)</code> to instantiate a
 p5.Convolver with a path to your impulse response audio file.</p>

 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.Convolver
 @extends p5.Effect
 @constructor
 @param  {String}   path     path to a sound file
 @param  {Function} [callback] function to call when loading succeeds
 @param  {Function} [errorCallback] function to call if loading fails.
                                    This function will receive an error or
                                    XMLHttpRequest object with information
                                    about what went wrong.
 @example
 <div><code>
 let cVerb, sound;
 function preload() {
   // We have both MP3 and OGG versions of all sound assets
   soundFormats('ogg', 'mp3');

   // Try replacing 'bx-spring' with other soundfiles like
   // 'concrete-tunnel' 'small-plate' 'drum' 'beatbox'
   cVerb = createConvolver('assets/bx-spring.mp3');

   // Try replacing 'Damscray_DancingTiger' with
   // 'beat', 'doorbell', lucky_dragons_-_power_melody'
   sound = loadSound('assets/Damscray_DancingTiger.mp3');
 }

 function setup() {
   let cnv = createCanvas(100, 100);
   cnv.mousePressed(playSound);
   background(220);
   text('tap to play', 20, 20);

   // disconnect from main output...
   sound.disconnect();

   // ...and process with cVerb
   // so that we only hear the convolution
   cVerb.process(sound);
 }

 function playSound() {
   sound.play();
 }
 </code></div>