在AudioEngine中使用音效

背景 – 在苹果最近的WWDC发布的video列表中,我看到了一个名为“AVAudioEngine in Practice”的video,将音效应用于audio。 https://developer.apple.com/videos/wwdc/2014/

之后,我用下面的代码成功地改变了audio的音调:

//Audio Engine is initialized in viewDidLoad() audioEngine = AVAudioEngine() //The following Action is called on clicking a button @IBAction func chipmunkPlayback(sender: UIButton) { var pitchPlayer = AVAudioPlayerNode() var timePitch = AVAudioUnitTimePitch() timePitch.pitch = 1000 audioEngine.attachNode(pitchPlayer) audioEngine.attachNode(timePitch) audioEngine.connect(pitchPlayer, to: timePitch, format: myAudioFile.processingFormat) audioEngine.connect(timePitch, to: audioEngine.outputNode, format: myAudioFile.processingFormat) pitchPlayer.scheduleFile(myAudioFile, atTime: nil, completionHandler: nil) audioEngine.startAndReturnError(&er) pitchPlayer.play() } 

根据我的理解,我使用AudioEngine将AudioPlayerNode与AudioEffect连接起来,而后者又连接到输出。

我现在好奇在audio中添加多个音效。 例如,音高改变和混响。 我将如何去添加多个音效的audio?

另外,是否有意义的附加和连接viewDidLoad中的节点,而不是我在IBAction这里做了什么?

只要连接他们。

 engine.connect(playerNode, to: reverbNode, format: format) engine.connect(reverbNode, to: distortionNode, format: format) engine.connect(distortionNode, to: delayNode, format: format) engine.connect(delayNode, to: mixer, format: format) 

背景 – 在Udacity发布的video列表中,我看到了一个名为“整合在一起 – 用Swift进行iOS应用开发的简介”的video,将音效应用于audio。

https://youtu.be/XiQfjaYJjuQ

之后,我用下面的代码成功地改变了audio的音调:

 func playAudioWithVariablePith(pitch: Float){ audioPlayer.stop() audioEngine.stop() audioEngine.reset() let audioPlayerNode = AVAudioPlayerNode() audioEngine.attachNode(audioPlayerNode) let changePitchEffect = AVAudioUnitTimePitch() changePitchEffect.pitch = pitch audioEngine.attachNode(changePitchEffect) audioEngine.connect(audioPlayerNode, to: changePitchEffect, format: nil) audioEngine.connect(changePitchEffect, to: audioEngine.outputNode, format: nil) audioPlayerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil) try! audioEngine.start() audioPlayerNode.play() }