[swift] AudioUnit의 오실레이터

오실레이터는 사인, 삼각, 사각 또는 펄스 같은 파형을 생성하는 디지털 신호 발생기입니다. 오실레이터는 사운드 신호를 만드는데 있어 핵심적인 부품으로 사용됩니다.

AudioUnit이란?

AudioUnit은 macOS와 iOS에서 사운드를 생성하고 처리하기 위한 훌륭한 수단입니다. 이는 사운드 통신을 다루는데 사용되며, 오실레이터 뿐만 아니라 필터, 반송파 제어기 등과 같은 다양한 오디오 프로세싱 작업을 수행할 수 있습니다.

AudioUnit을 사용한 오실레이터 구현

다음은 Swift를 사용하여 AudioUnit을 통해 오실레이터를 생성하는 간단한 예시 코드입니다.

import AudioToolbox

let frequency: Double = 440.0
var audioComponentDescription = AudioComponentDescription(
    componentType: kAudioUnitType_Generator,
    componentSubType: kAudioUnitSubType_ScheduledSoundPlayer,
    componentManufacturer: kAudioUnitManufacturer_Apple,
    componentFlags: 0,
    componentFlagsMask: 0
)

var outputUnit: AudioUnit?
let status = AudioComponentInstanceNew(AudioComponentFindNext(nil, &audioComponentDescription), &outputUnit)
if status == noErr {
    var waveform: AudioUnitParameterValue = kAudioUnitWaveformSine
    AudioUnitSetProperty(outputUnit!, kAudioUnitProperty_Waveform, kAudioUnitScope_Global, 0, &waveform, UInt32(MemoryLayout.size(ofValue: waveform)))

    AudioUnitSetParameter(outputUnit!, kAudioUnitParameterUnit_Hertz, kAudioUnitScope_Global, 0, Float32(frequency), 0)

    AudioOutputUnitStart(outputUnit!)
}

위의 코드는 440Hz의 사인 파형으로 오실레이터를 설정한 후 AudioUnit을 시작합니다. 물론, 다른 파형과 주파수 등을 설정하여 원하는 사운드를 만들 수 있습니다.

요약

이렇게 AudioUnit을 사용하여 오실레이터를 구현하는 방법을 알아보았습니다. AudioUnit은 다양한 프로세싱 기능을 제공하므로 사운드 프로그래밍에 유용하게 활용될 수 있습니다. 오실레이터를 이용하여 다양한 사운드를 만들어내는 것은 음악 및 사운드 디자인 분야에서 매우 중요한 작업입니다.

참조: