diff --git a/src/lib/tunes/tunes.cpp b/src/lib/tunes/tunes.cpp
index ea81d0403397b43280c8d9f6254937d6c7a10ac8..4457ab8f2a12090fcd434f4a5a08a3137346a718 100644
--- a/src/lib/tunes/tunes.cpp
+++ b/src/lib/tunes/tunes.cpp
@@ -94,6 +94,12 @@ int Tunes::set_control(const tune_control_s &tune_control)
 	    tune_control.tune_override ||  // Override interrupts everything
 	    _default_tunes_interruptable[_current_tune_id]) {
 
+		// Check if this exact tune is already being played back
+		if (tune_control.tune_id != static_cast<int>(TuneID::CUSTOM) &&
+		    _tune == _default_tunes[tune_control.tune_id]) {
+			return OK; // Nothing to do
+		}
+
 		// Reset repeat flag. Can jump to true again while tune is being parsed later
 		_repeat = false;