Я делаю простую задачу из курса Udacity (Pitch Perfect)Swift. Звук не воспроизводится во второй раз
У меня есть один экран, где я записываю звук. После записи я сохраняю файл и передаю его на второй экран.
На втором экране у меня есть несколько кнопок, которые воспроизводят звук по-разному. Там у меня есть функция, которая воспроизводит звук.
Дело в том, что когда я впервые нахожу эту функцию, звук воспроизводится, но во второй раз звук отсутствует.
Я застрял.
func playSoundWithPitchRate(pitch: Float) {
self.audioPlayer.stop()
self.audioEngine.stop()
self.audioEngine.reset()
let audioPlayerNode = AVAudioPlayerNode()
self.audioEngine.attachNode(audioPlayerNode)
let changePitchEffect = AVAudioUnitTimePitch()
changePitchEffect.pitch = pitch
self.audioEngine.attachNode(changePitchEffect)
self.audioEngine.connect(audioPlayerNode, to: changePitchEffect, format: nil)
self.audioEngine.connect(changePitchEffect, to: self.audioEngine.outputNode, format: nil)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: self.audioFile.processingFormat, frameCapacity: AVAudioFrameCount(self.audioFile.length))
do{
try self.audioFile.readIntoBuffer(audioFileBuffer)
} catch let err as NSError {
print("self.audioFile.readIntoBuffer(audioFileBuffer)")
print(err.localizedDescription)
}
audioPlayerNode.scheduleBuffer(audioFileBuffer, atTime: nil, options: .Interrupts) {() -> Void in
// reminder: we're not on the main thread in here
dispatch_async(dispatch_get_main_queue()) {
self.stopPlayButton.enabled = false
self.makeSoundEffectButtonsEnabled(true)
}
}
do {
try audioEngine.start()
} catch let err as NSError {
print("audioEngine.start()")
print(err.localizedDescription)
}
audioPlayerNode.play()
}