Source: effect/Effect.js

define(["Tone/core/Tone", "Tone/component/DryWet"], function(Tone){
	
	/**
	 * 	Effect is the base class for effects. connect the effect between
	 * 	the effectSend and effectReturn GainNodes. then control the amount of
	 * 	effect which goes to the output using the dry/wet control.
	 *
	 *  @constructor
	 *  @extends {Tone}
	 *  @param {number=} initalDry the starting dry value
	 *                             defaults to 0.5 (50% dry / 50% wet)
	 */
	Tone.Effect = function(initialDry){
		Tone.call(this);

		/**
		 *  the drywet knob to control the amount of effect
		 *  
		 *  @type {Tone.DryWet}
		 */
		this.dryWet = new Tone.DryWet();
		/**
		 *  connect the effectSend to the input of hte effect
		 *  
		 *  @type {GainNode}
		 */
		this.effectSend = this.context.createGain();
		/**
		 *  connect the output of the effect to the effectReturn
		 *  
		 *  @type {GainNode}
		 */
		this.effectReturn = this.context.createGain();

		//connections
		this.input.connect(this.dryWet.dry);
		this.input.connect(this.effectSend);
		this.effectReturn.connect(this.dryWet.wet);
		this.dryWet.connect(this.output);
		
		//setup
		this.setDry(this.defaultArg(initialDry, 0.5));
	};

	Tone.extend(Tone.Effect);

	/**
	 * setDry adjusts the dry / wet balance
	 * dryness is 0 (100% wet) to 1 (100% dry)
	 * 
	 * @param {number} dryness
	 * @param {Tone.Time=} rampTime
	 */
	Tone.Effect.prototype.setDry = function(dryness, rampTime){
		this.dryWet.setDry(dryness, rampTime);
	};

	/**
	 * setWet also adjusts the dry / wet balance
	 * wetVal is 0 (100% dry) to 1 (100% wet)
	 * 
	 * @param {number} wetness
	 * @param {Tone.Time=} rampTime
	 */
	Tone.Effect.prototype.setWet = function(wetVal, rampTime){
		this.dryWet.setWet(wetVal, rampTime);
	};

	/**
	 *  bypass the effect
	 */
	Tone.Effect.prototype.bypass = function(){
		this.setDry(1);
	};

	/**
	 *  chains the effect in between the effectSend and effectReturn
	 *  @param  {Tone} effect
	 */
	Tone.Effect.prototype.connectEffect = function(effect){
		this.chain(this.effectSend, effect, this.effectReturn);
	};

	/**
	 *  tear down
	 */
	Tone.Effect.prototype.dispose = function(){
		this.dryWet.dispose();
		this.input.disconnect();
		this.output.disconnect();
		this.effectSend.disconnect();
		this.effectReturn.disconnect();
		this.dryWet = null;
		this.input = null;
		this.output = null;
		this.effectSend = null;
		this.effectReturn = null;
	};

	return Tone.Effect;
});
Tone No Tone Copyright © 2014.
Documentation generated on Mon Jun 23 2014 14:51:30 GMT-0400 (EDT).