diff --git a/Tone/source/GrainPlayer.js b/Tone/source/GrainPlayer.js
index <HASH>..<HASH> 100644
--- a/Tone/source/GrainPlayer.js
+++ b/Tone/source/GrainPlayer.js
@@ -300,6 +300,19 @@ define(["../core/Tone", "../source/Source", "../core/Buffer", "../source/BufferS
 	});
 
 	/**
+	 * If all the buffer is loaded
+	 * @memberOf Tone.GrainPlayer#
+	 * @type {Boolean}
+	 * @name loaded
+	 * @readOnly
+	 */
+	Object.defineProperty(Tone.GrainPlayer.prototype, "loaded", {
+		get : function(){
+			return this.buffer.loaded;
+		}
+	});
+
+	/**
 	 * Clean up
 	 * @return {Tone.GrainPlayer} this
 	 */
diff --git a/test/source/GrainPlayer.js b/test/source/GrainPlayer.js
index <HASH>..<HASH> 100644
--- a/test/source/GrainPlayer.js
+++ b/test/source/GrainPlayer.js
@@ -67,6 +67,7 @@ function(BasicTests, GrainPlayer, Offline, SourceTests, Buffer, Test, Tone, Comp
 
 			it("loads a url which was passed in", function(done){
 				var player = new GrainPlayer("./audio/sine.wav", function(){
+					expect(player.loaded).to.be.true;
 					player.dispose();
 					done();
 				});
loaded boolean indicates when GrainPlayer is loaded

consistent with Tone.Player