Я использую AKKaveTable AudioKit (ранее AKSamplePlayer) для воспроизведения семпла, на который пользователь нажимает из списка. (У меня есть потенциально сотни файлов здесь, поэтому я не хочу ничего предварительно загружать.) Фрагмент кода, который у меня есть ниже, работает нормально - один раз. У меня проблемы с пониманием того, как управлять жизненным циклом AudioKit и его выходов. Я пробовал несколько подходов к этому, но я в конечном итоге с исключениями или сбоями. Должен ли я звонить start()
только один раз на AudioKit, а затем stop()
, когда я нажимаю на другой звук? Кажется, это не публичный способ сообщить мне, если AudioKit остановлен или запущен. Или есть какой-то более простой способ сохранить AudioKit инициализированным, но заменить вывод на новый экземпляр AKWaveTable?
let file = try AKAudioFile(forReading: self.url)
let samplePlayer = AKWaveTable(file: file)
AudioKit.output = samplePlayer
try AudioKit.start()
samplePlayer.play()