     ///              important that this value be the same for all of them as a reference point.
     ///
     open func play(from time: Double, to endTime: Double, avTime: AVAudioTime? ) {
-        stop()
-
-        if endTime > 0 {
-            self.endTime = endTime
-        }
-        self.startTime = time
-
+        schedule(from: time, to: endTime, avTime: avTime)
         if endingFrame > startingFrame {
-            scheduledAVTime = avTime
             start()
         } else {
             AKLog("ERROR AKaudioPlayer: cannot play, \(internalAudioFile.fileNamePlusExtension) " +
                 "is empty or segment is too short")
+        }
+    }
+
+    open func schedule(from time: Double, to endTime: Double, avTime: AVAudioTime? ) {
+        stop()
+
+        if endTime > 0 {
+            self.endTime = endTime
+        }
+        self.startTime = time
+
+        if endingFrame > startingFrame {
+            scheduledAVTime = avTime
         }
     }
 


    /// Start playback
    open func start() {

        if ❗️playing {
            if audioFileBuffer != nil {

                    scheduleBuffer(atTime: scheduledAVTime, options: defaultBufferOptions)
                }

                internalPlayer.play(at: when)

                playing = true
                paused = false
