diff --git a/solarpump/mp3.h b/solarpump/mp3.h
index bcc64edae36da61ac1cf5416a33a53502561e8ca..038879b28bcc578f711f45f302d425186d62df47 100644
--- a/solarpump/mp3.h
+++ b/solarpump/mp3.h
@@ -2,7 +2,7 @@
 #define MP3_H
 
 void mp3Setup(void);
-void playFile(uint8_t fileNumber);
+void playFile(uint8_t fileNumber, bool respectBusyPin);
 void mp3Loop(void);
 void playFileQueue(uint8_t fileNumber);
 
diff --git a/solarpump/mp3.ino b/solarpump/mp3.ino
index a58ec6d5d5aa882a11c4e5b28c7334247a2bc3b1..34368839803751912901f04e8c268ba177fe3d84 100644
--- a/solarpump/mp3.ino
+++ b/solarpump/mp3.ino
@@ -14,8 +14,12 @@ void mp3Setup(void) {
 	//mp3.sendCommand(CMD_SEL_DEV, 0, 2); //select sd-card
 }
 
-// immediately play a file, ignoring any queue or BUSY pin
-void playFile(uint8_t fileNumber) {
+// immediately play a file
+void playFile(uint8_t fileNumber, bool respectBusyPin) {
+	// do nothing if we want to wait for the BUSY pin
+	if (respectBusyPin && digitalRead(MP3BUSY)) {
+		return;
+	}
 	mp3.write(fileNumber);
 }