Подтвердить что ты не робот

Использование звуковых эффектов с помощью AudioEngine

Фон - я увидел видео под названием "AVAudioEngine in Practice" из следующего списка видео, опубликованных в недавнем WWDC Apple, для применения звуковых эффектов к звуку. https://developer.apple.com/videos/wwdc/2014/

После этого я смог изменить высоту звука с помощью следующего кода:

 //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, который я, в свою очередь, подключил к выходу.

Мне теперь любопытно добавить несколько звуковых эффектов в аудио. Например, изменение основного тона и реверберация. Как я могу добавить несколько звуковых эффектов в звук?

Также было бы целесообразно подключать и подключать узлы в viewDidLoad, а не как я сделал это здесь в IBAction?

4b9b3361

Ответ 1

Просто соедините их.

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)

Ответ 2

Фон - я увидел видео под названием "Объединение всего этого - введение в разработку приложений iOS с помощью Swift" из следующего списка видео, опубликованных в Udacity, для применения звуковых эффектов к аудио.

https://youtu.be/XiQfjaYJjuQ

После этого я смог изменить высоту звука с помощью следующего кода:

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

    }