Swift — Как поставить в очередь, приостановить и остановить серию аудиофайлов?

#swift #xcode #avaudioengine

Вопрос:

Я пытаюсь поставить в очередь серию звуковых событий, которые будут воспроизводиться последовательно, но я не уверен, как правильно поставить их в очередь, чтобы я мог приостановить/возобновить их, а также полностью остановить.

В настоящее время я использую рабочие элементы, но в настоящее время не добиваюсь успеха в уничтожении всех рабочих элементов или понимании того, как их приостановить/возобновить.

В приведенном ниже коде используется цикл while для всех n раундов моего приложения, который в основном воспроизводит файл фортепиано, случайную ноту через несколько секунд, а затем голос диктора.

 func callPlay() {
        
        for _ in 1...Trainer.rounds {
            
            //Cadence
            workItem = DispatchWorkItem { self.trainer.playCadence() }
            DispatchQueue.main.asyncAfter(deadline: .now()   timerMarker, execute: workItem!)
            timerMarker  = trainer.cadenceSecsLength
            
            //Random Note
            let note = self.trainer.getRandomNote()
            workItem = DispatchWorkItem { self.trainer.playNote(note) }
            DispatchQueue.main.asyncAfter(deadline: .now()   timerMarker, execute: workItem!)
            timerMarker  = announceDelay
            
            //Note Announcement
            let noteValue = K.noteFamily[Trainer.noteDistance][2]
            workItem = DispatchWorkItem {
                self.trainer.playNote(noteValue)
                
            }
            DispatchQueue.main.asyncAfter(deadline: .now()   timerMarker, execute: workItem!)

            //New Round Delay
            timerMarker  = newRoundDelay
        }
    }
}

func stopPlayer() {
        if ((Trainer.avaudioplayer) != nil) {
            Trainer.avaudioplayer.stop()
        }
    }
 

Функция stopPlayer() отключит текущее аудио, но не поставленное в очередь аудио, и я не уверен, как приостановить/возобновить все аудио, которые были поставлены в очередь.