define(["Tone/core/Tone", "Tone/shim/AudioContext", "Tone/core/Context", "Tone/core/Gain"], function(Tone){

	if (Tone.supported && !window.ConstantSourceNode){

		var ConstantSourceNode = function(context){
			this.context = context;

			var buffer = context.createBuffer(1, 128, context.sampleRate);
			var arr = buffer.getChannelData(0);
			for (var i = 0; i < arr.length; i++){
				arr[i] = 1;
			}

			this._bufferSource = context.createBufferSource();
			this._bufferSource.channelCount = 1;
			this._bufferSource.channelCountMode = "explicit";
			this._bufferSource.buffer = buffer;
			this._bufferSource.loop = true;

			var gainNode = this._output = context.createGain();
			this.offset = gainNode.gain;

			this._bufferSource.connect(gainNode);
		};

		ConstantSourceNode.prototype.start = function(time){
			this._bufferSource.start(time);
			return this;
		};

		ConstantSourceNode.prototype.stop = function(time){
			this._bufferSource.stop(time);
			return this;
		};

		ConstantSourceNode.prototype.connect = function(){
			this._output.connect.apply(this._output, arguments);
			return this;
		};

		ConstantSourceNode.prototype.disconnect = function(){
			this._output.disconnect.apply(this._output, arguments);
			return this;
		};

		AudioContext.prototype.createConstantSource = function(){
			return new ConstantSourceNode(this);
		};

		Tone.Context.prototype.createConstantSource = function(){
			return new ConstantSourceNode(this);
		};
	}
});

@@ -130,15 +130,37 @@
 && !
-window.
+AudioContext.prototype.create
 Cons
@@ -169,20 +169,16 @@
 ntSource
-Node
 )%7B%0A%0A%09%09va
@@ -219,16 +219,16 @@
 ntext)%7B%0A
-
 %09%09%09this.
@@ -247,16 +247,94 @@
 ntext;%0A%0A
+%09%09%09// eslint-disable-next-line no-console%0A%09%09%09console.log(context.sampleRate)%0A%0A
 %09%09%09var b

print context sample rate for debugging osx failures