mirror of
https://github.com/Tonejs/Tone.js
synced 2024-12-30 21:48:45 +00:00
71 lines
No EOL
1.6 KiB
JavaScript
71 lines
No EOL
1.6 KiB
JavaScript
define(["Tone/core/Tone", "Tone/signal/Signal", "Tone/signal/Threshold"], function(Tone){
|
|
|
|
/**
|
|
* When the gate is set to 0, the input signal does not pass through to the output.
|
|
* If the gate is set to 1, the input signal passes through
|
|
*
|
|
* the switch will initially be closed.
|
|
*
|
|
* @constructor
|
|
* @extends {Tone}
|
|
*/
|
|
Tone.Switch = function(){
|
|
Tone.call(this);
|
|
|
|
/**
|
|
* the control signal for the switch
|
|
* when this value is 0, the input signal will not pass through,
|
|
* when it is high (1), the input signal will pass through.
|
|
*
|
|
* @type {Tone.Signal}
|
|
*/
|
|
this.gate = new Tone.Signal(0);
|
|
|
|
/**
|
|
* thresh the control signal
|
|
* @type {Tone.Threshold}
|
|
* @private
|
|
*/
|
|
this._thresh = new Tone.Threshold(0.5);
|
|
|
|
this.input.connect(this.output);
|
|
this.chain(this.gate, this._thresh, this.output.gain);
|
|
this.output.gain.value = 0;
|
|
};
|
|
|
|
Tone.extend(Tone.Switch);
|
|
|
|
/**
|
|
* open the switch at a specific time
|
|
*
|
|
* @param {Tone.Time} time the time when the switch will be open
|
|
*/
|
|
Tone.Switch.prototype.open = function(time){
|
|
this.gate.setValueAtTime(1, this.toSeconds(time));
|
|
};
|
|
|
|
/**
|
|
* close the switch at a specific time
|
|
*
|
|
* @param {Tone.Time} time the time when the switch will be open
|
|
*/
|
|
Tone.Switch.prototype.close = function(time){
|
|
this.gate.setValueAtTime(0, this.toSeconds(time));
|
|
};
|
|
|
|
/**
|
|
* clean up
|
|
*/
|
|
Tone.Switch.prototype.dispose = function(){
|
|
this.gate.dispose();
|
|
this._thresh.dispose();
|
|
this.input.disconnect();
|
|
this.output.disconnect();
|
|
this.signal = null;
|
|
this._thresh = null;
|
|
this.input = null;
|
|
this.output = null;
|
|
};
|
|
|
|
return Tone.Switch;
|
|
}); |