     public var playbackRate: Float = 1.0 {
         didSet {
             //currentPlaybackRate == 0 when stopped
-            if player.currentPlaybackRate != 0 {
-                player.currentPlaybackRate = playbackRate
-            }
-            
+            guard player.currentPlaybackRate != 0,
+                  player.currentPlaybackRate != playbackRate else {
+                return
+            }
+            
+            player.currentPlaybackRate = playbackRate
             DispatchQueue.main.async {
                 self.delegate?.playbackRateAdjusted()
             }

            // necessary for audio processing. This optimization may need to be made conditional if
            // we hit similar issues.
            timePitch.bypass = (rate == kRateCenter)
            
            
            DispatchQueue.main.async {
                self.delegate?.playbackRateAdjusted()

        }
        
        set(rate) {
            guard rate != timePitch.rate else {
                return
            }
            
            timePitch.rate = rate

            //Enabling bypass when at center position saves us significant CPU cycles, battery, etc.
