Tone.js/Tone/effect/FeedbackDelay.js

61 lines
1.4 KiB
JavaScript
Raw Normal View History

define(["Tone/core/Tone", "Tone/effect/FeedbackEffect", "Tone/signal/Signal"], function(Tone){
/**
* A feedback delay
*
* @constructor
* @extends {Tone.FeedbackEffect}
* @param {Tone.Time=} delayTime
*/
Tone.FeedbackDelay = function(delayTime){
2014-08-23 17:50:30 +00:00
Tone.FeedbackEffect.call(this);
/**
* Tone.Signal to control the delay amount
* @type {Tone.Signal}
*/
2014-08-23 17:50:30 +00:00
this.delayTime = new Tone.Signal();
/**
* the delay node
* @type {DelayNode}
* @private
*/
this._delayNode = this.context.createDelay(4);
// connect it up
this.connectEffect(this._delayNode);
2014-08-23 17:50:30 +00:00
this.delayTime.connect(this._delayNode.delayTime);
//set the initial delay
this.setDelayTime(this.defaultArg(delayTime, 0.25));
};
Tone.extend(Tone.FeedbackDelay, Tone.FeedbackEffect);
/**
* Sets the delay time
*
* @param {Tone.Time} delayTime
* @param {Tone.Time=} rampTime time it takes to reach the desired delayTime
*/
Tone.FeedbackDelay.prototype.setDelayTime = function(delayTime, rampTime){
if (rampTime){
2014-08-23 17:50:30 +00:00
this.delayTime.linearRampToValueNow(this.toSeconds(delayTime), rampTime);
} else {
2014-08-23 17:50:30 +00:00
this.delayTime.setValue(this.toSeconds(delayTime));
}
};
/**
* clean up
*/
Tone.FeedbackDelay.prototype.dispose = function(){
Tone.FeedbackEffect.prototype.dispose.call(this);
2014-08-23 17:50:30 +00:00
this.delayTime.dispose();
this._delayNode.disconnect();
this._delayNode = null;
2014-08-23 17:50:30 +00:00
this.delayTime = null;
};
return Tone.FeedbackDelay;
});