Tone.js/Tone/signal/SignalBase.js
tambien ed71d8141b amd to es6 import/export
no longer using AMD (require.js) style imports, and beginning to move to es6 "import/export" statements everywhere.
2019-01-27 13:05:20 -05:00

46 lines
1.4 KiB
JavaScript

import Tone from "../core/Tone";
import "../core/AudioNode";
/**
* @class Base class for all Signals. Used Internally.
*
* @constructor
* @extends {Tone}
*/
Tone.SignalBase = function(){
Tone.AudioNode.call(this);
};
Tone.extend(Tone.SignalBase, Tone.AudioNode);
/**
* When signals connect to other signals or AudioParams,
* they take over the output value of that signal or AudioParam.
* For all other nodes, the behavior is the same as a default <code>connect</code>.
*
* @override
* @param {AudioParam|AudioNode|Tone.Signal|Tone} node
* @param {number} [outputNumber=0] The output number to connect from.
* @param {number} [inputNumber=0] The input number to connect to.
* @returns {Tone.SignalBase} this
*/
Tone.SignalBase.prototype.connect = function(node, outputNumber, inputNumber){
//zero it out so that the signal can have full control
if ((Tone.Signal && Tone.Signal === node.constructor) ||
(Tone.Param && Tone.Param === node.constructor)){
//cancel changes
node._param.cancelScheduledValues(0);
//reset the value
node._param.setValueAtTime(0, 0);
//mark the value as overridden
node.overridden = true;
} else if (node instanceof AudioParam){
node.cancelScheduledValues(0);
node.setValueAtTime(0, 0);
}
Tone.AudioNode.prototype.connect.call(this, node, outputNumber, inputNumber);
return this;
};
export default Tone.SignalBase;