[swift] 사운드 페이드 인/아웃 효과 추가하기

사운드 페이드 인/아웃 효과는 음악이나 효과음을 부드럽게 등장하거나 사라지게 만들어주는 효과입니다. 이 기능은 영화나 게임 등 다양한 멀티미디어 작업에서 자주 사용됩니다. 이번에는 Swift를 사용하여 사운드 페이드 인/아웃 효과를 추가하는 방법에 대해 알아보겠습니다.

AVAudioPlayer를 사용하여 사운드 재생하기

우선 사운드를 재생하기 위해 AVAudioPlayer 클래스를 사용해야 합니다. AVAudioPlayer를 사용하여 음악 파일 또는 효과음 파일을 재생할 수 있습니다. 아래는 간단한 예시 코드입니다.

import AVFoundation

class SoundPlayer {
    var audioPlayer: AVAudioPlayer?

    func playSound(fileNamed: String) {
        guard let soundURL = Bundle.main.url(forResource: fileNamed, withExtension: "mp3") else { return }

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
            audioPlayer?.play()
        } catch {
            print("음악을 재생하는 동안 오류가 발생했습니다.")
        }
    }
}

위의 코드는 AVAudioPlayer를 사용하여 playSound라는 함수를 정의합니다. 함수를 호출할 때 재생할 사운드 파일의 이름을 전달하면 해당 사운드가 재생됩니다.

사운드 페이드 인/아웃 효과 적용하기

이제 우리는 사운드 페이드 인/아웃 효과를 적용해보겠습니다. AVAudioPlayer에는 volume 프로퍼티가 있어 음량을 조절할 수 있습니다. 이를 활용하여 사운드를 서서히 페이드 인/아웃할 수 있습니다. 아래는 간단한 예시 코드입니다.

import AVFoundation

class SoundPlayer {
    var audioPlayer: AVAudioPlayer?

    func playSoundWithFadeInOut(fileNamed: String) {
        guard let soundURL = Bundle.main.url(forResource: fileNamed, withExtension: "mp3") else { return }

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
            audioPlayer?.volume = 0.0
            audioPlayer?.play()

            // 페이드 인 효과 적용
            audioPlayer?.setVolume(1.0, fadeDuration: 2.0)

            // 3초 후 페이드 아웃 효과 적용
            DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
                self.audioPlayer?.setVolume(0.0, fadeDuration: 2.0)
            }
        } catch {
            print("음악을 재생하는 동안 오류가 발생했습니다.")
        }
    }
}

위의 코드에서 playSoundWithFadeInOut 함수는 사운드를 페이드 인/아웃 효과와 함께 재생합니다. 사운드를 다시 생생할 때 setVolume 메서드를 사용하여 페이드 인/아웃 효과를 적용하고, DispatchQueue.main.asyncAfter를 사용하여 특정 시간 이후에 페이드 아웃을 적용합니다.

이렇게 시간을 조절하면 사운드를 서서히 나타내거나 사라지게 할 수 있습니다.

이제 사운드 페이드 인/아웃 효과를 Swift로 구현하는 방법에 대해 알아보았습니다. 음악이나 효과음을 더욱 부드럽게 재생하기 위해 이러한 효과를 활용해보세요!

참고 자료