[ios] Core Audio 딜레이 및 리버브 효과

Core Audio는 iOS 애플리케이션에서 오디오 처리 기능을 구현하는 데 매우 유용한 프레임워크입니다. 이번 포스트에서는 Core Audio를 사용하여 딜레이와 리버브 효과를 구현하는 방법에 대해 알아보겠습니다.

딜레이 효과 구현하기

딜레이 효과는 오디오 신호를 일정 시간 간격으로 반복하여 재생하는 효과를 말합니다. Core Audio에서는 AVAudioUnitDelay 노드를 사용하여 딜레이 효과를 구현할 수 있습니다.

import AVFoundation

// AVAudioEngine 설정
let engine = AVAudioEngine()
let player = AVAudioPlayerNode()
let delay = AVAudioUnitDelay()

engine.attach(player)
engine.attach(delay)
engine.connect(player, to: delay, format: nil)
engine.connect(delay, to: engine.mainMixerNode, format: nil)

// 딜레이 파라미터 설정
delay.delayTime = 0.5 // 딜레이 시간 설정 (초 단위)
delay.feedback = 50 // 피드백 값 설정 (0 ~ 100)
delay.wetDryMix = 50 // 원본 신호 대비 딜레이 신호의 세기 설정 (0 ~ 100)

// AVAudioEngine 시작
try? engine.start()
player.play()

리버브 효과 구현하기

리버브 효과는 오디오 신호에 공간적 반사를 더해 실제 공간에서 들리는 듯한 효과를 줍니다. Core Audio에서는 AVAudioUnitReverb 노드를 사용하여 리버브 효과를 구현할 수 있습니다.

import AVFoundation

// AVAudioEngine 설정
let engine = AVAudioEngine()
let player = AVAudioPlayerNode()
let reverb = AVAudioUnitReverb()

engine.attach(player)
engine.attach(reverb)
engine.connect(player, to: reverb, format: nil)
engine.connect(reverb, to: engine.mainMixerNode, format: nil)

// 리버브 파라미터 설정
reverb.loadFactoryPreset(.largeHall) // 리버브 타입 설정
reverb.wetDryMix = 50 // 원본 신호 대비 리버브 신호의 세기 설정 (0 ~ 100)

// AVAudioEngine 시작
try? engine.start()
player.play()

이처럼 Core Audio를 사용하여 딜레이와 리버브 효과를 구현할 수 있습니다. 추가적으로 파라미터를 조절하여 다양한 효과를 만들어볼 수 있습니다.

더 자세한 내용은 Core Audio 프로그래밍 가이드를 참고하세요.