         }
     }
 
-    fileprivate func scheduleBuffer(_ atTime: AVAudioTime? = nil) {
+    fileprivate func scheduleBuffer(atTime: AVAudioTime?, options: AVAudioPlayerNodeBufferOptions) {
         if audioFileBuffer != nil {
 
             if let buffer = audioFileBuffer {
                 internalPlayer.scheduleBuffer(buffer,
                                               at: atTime,
-                                              options: .interrupts,
-                                              completionHandler: internalCompletionHandler)
+                                              options: options,
+                                              completionHandler: looping ? nil : internalCompletionHandler)
             }
 
             if atTime != nil {

        AudioKit.engine.detach(internalPlayer)
    }

    // MARK: - Methods

    /// Start playback

    open dynamic var completionHandler: AKCallback?

    /// Boolean indicating whether or not to loop the playback
    open dynamic var looping: Bool = false {
        didSet {
            if playing {
                let options: AVAudioPlayerNodeBufferOptions = looping ? [.loops, .interruptsAtLoop] : [.interruptsAtLoop]
                scheduleBuffer(atTime: nil, options: options)
            }
        }
    }

    /// Boolean indicating to play the buffer in reverse
    open dynamic var reversed: Bool = false {
