diff --git a/Tone/component/PanVol.js b/Tone/component/PanVol.js new file mode 100644 index 00000000..43caab6c --- /dev/null +++ b/Tone/component/PanVol.js @@ -0,0 +1,57 @@ +define(["Tone/core/Tone", "Tone/component/Panner", "Tone/source/Source"], function(Tone){ + + "use strict"; + + /** + * @class A Panner and volume in one + * + * @extends {Tone} + * @constructor + */ + Tone.PanVol = function(pan, volume){ + /** + * the panning node + * @type {Tone.Panner} + */ + this.pan = this.input = new Tone.Panner(pan); + + /** + * the volume node + * @type {GainNode} + */ + this.vol = this.output = this.context.createGain(); + + //connections + this.pan.connect(this.vol); + this.setVolume(this.defaultArg(volume, 0)); + }; + + Tone.extend(Tone.PanVol); + + /** + * borrows the source's set volume + * @function + */ + Tone.PanVol.prototype.setVolume = Tone.Source.prototype.setVolume; + + /** + * set the panning + * @param {number} pan 0-1 L-R + */ + Tone.PanVol.prototype.setPan = function(pan){ + this.pan.setPan(pan); + }; + + /** + * clean up + */ + Tone.PanVol.prototype.dispose = function(){ + Tone.prototype.dispose.call(this); + this.pan.dispose(); + this.pan = null; + this.vol.disconnect(); + this.vol = null; + }; + + return Tone.PanVol; +}); \ No newline at end of file