ios swift avaudioengine avaudioplayernode

ios - Usando efectos de sonido con AudioEngine



swift avaudioengine (2)

Antecedentes: vi un video titulado "Reuniéndolo todo: Introducción al desarrollo de aplicaciones iOS con Swift" de la siguiente lista de videos publicados en Udacity para aplicar efectos de sonido a un audio.

https://youtu.be/XiQfjaYJjuQ

Después de eso, pude cambiar el tono de un audio con el siguiente código:

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() }

Antecedentes: vi un video titulado "AVAudioEngine in Practice" de la siguiente lista de videos publicados en la reciente WWDC de Apple para aplicar efectos de sonido a un audio. https://developer.apple.com/videos/wwdc/2014/

Después de eso, pude cambiar el tono de un audio con el siguiente código:

//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() }

Por lo que entiendo, utilicé AudioEngine para adjuntar AudioPlayerNode con AudioEffect, que a su vez conecté a la Salida.

Ahora tengo curiosidad por agregar varios efectos de sonido al audio. Por ejemplo, cambio de tono y reverberación. ¿Cómo haría para agregar varios efectos de sonido al audio?

Además, ¿tendría sentido unir y conectar los nodos en viewDidLoad en lugar de cómo lo he hecho aquí en una IBAction?


Sólo conéctelos.

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)