[swift] 사운드 이퀄라이저 적용하기

이번에는 Swift 프로그래밍 언어를 사용하여 사운드 이퀄라이저를 적용하는 방법을 알아보겠습니다.

사운드 이퀄라이저란?

사운드 이퀄라이저는 오디오 신호의 주파수 볼륨 분포를 조절하여 사운드의 톤 및 음량을 조절하는 기능입니다. 이를 통해 사용자는 오디오 재생 시 음악의 특정 주파수 대역을 강조하거나 약화시킬 수 있습니다.

AVAudioPlayer 사용하기

사운드 이퀄라이저를 적용하기 위해서는 먼저 AVAudioPlayer를 사용하여 오디오 파일을 재생해야 합니다. 다음과 같이 AVAudioPlayer를 초기화하고 오디오 파일을 로드합니다.

import AVFoundation

var audioPlayer: AVAudioPlayer?

if let path = Bundle.main.path(forResource: "audio", ofType: "mp3") {
    let url = URL(fileURLWithPath: path)

    do {
        audioPlayer = try AVAudioPlayer(contentsOf: url)
        audioPlayer?.prepareToPlay()
    } catch {
        // 오디오 파일 로드 실패 처리
    }
}

기본 이퀄라이저 설정

AVAudioPlayer에 기본 이퀄라이저를 적용하기 위해서는 AVAudioPlayerNode와 AVAudioEngine를 사용해야 합니다. 다음과 같이 코드를 추가하여 기본 이퀄라이저를 설정합니다.

import AVFoundation

let audioEngine = AVAudioEngine()
let playerNode = AVAudioPlayerNode()

audioEngine.attach(playerNode)

let equalizer = AVAudioUnitEQ(numberOfBands: 10) // 10개의 밴드를 가지는 이퀄라이저 생성

equalizer.globalGain = 0 // 이퀄라이저 전체 강도 설정

audioEngine.connect(playerNode, to: equalizer, format: nil)
audioEngine.connect(equalizer, to: audioEngine.mainMixerNode, format: nil)

try? audioEngine.start()
playerNode.play()

위의 코드에서 numberOfBands는 이퀄라이저의 밴드 개수를 의미하며, globalGain은 이퀄라이저의 전체 강도를 설정합니다. 이퀄라이저의 각 밴드에 대해 세부 설정을 원할 경우, equalizer.bands[index].bypass = false와 같이 코드를 추가하면 됩니다.

이퀄라이저 설정 변경

이퀄라이저 설정을 동적으로 변경하려면 equalizer.bands[index].gain 속성을 변경하면 됩니다. 다음은 오디오 재생 중에 이퀄라이저 강도를 변경하는 예시입니다.

equalizer.bands[0].gain = -10 // 첫 번째 밴드의 강도 조절

위의 예시에서는 첫 번째 밴드의 강도를 -10으로 조절하는 코드입니다. 필요한 밴드의 강도를 조절하여 원하는 사운드 이퀄라이저를 적용할 수 있습니다.

결론

위에서는 Swift를 사용하여 사운드 이퀄라이저를 적용하는 방법을 알아보았습니다. AVAudioPlayer를 사용하여 오디오 파일을 재생하고, AVAudioUnitEQ를 사용하여 이퀄라이저를 설정할 수 있습니다. 동적으로 이퀄라이저 설정을 변경하여 원하는 사운드 효과를 얻을 수 있습니다.