What we talk about when we talk about Technology

技術について語ります。

iPod Equalizer 一覧

CFArrayRefの取り扱いに苦労しました。。

import Foundation
import AudioToolbox

var cd = AudioComponentDescription(componentType: kAudioUnitType_Effect,
                                   componentSubType: kAudioUnitSubType_AUiPodEQ,
                                   componentManufacturer: kAudioUnitManufacturer_Apple,
                                   componentFlags: 0,
                                   componentFlagsMask: 0)
let component = AudioComponentFindNext(nil, &cd)

var iPodEQUnit: AudioUnit = nil
AudioComponentInstanceNew(component, &iPodEQUnit)
AudioUnitInitialize(iPodEQUnit)

var presets: CFArrayRef = []
var propertySize = UInt32(sizeof(CFArrayRef))
AudioUnitGetProperty(iPodEQUnit,
                     kAudioUnitProperty_FactoryPresets,
                     kAudioUnitScope_Global,
                     0,
                     &presets,
                     &propertySize)

let count = CFArrayGetCount(presets)

for i in 0 ..< count {
    
    let preset: AUPreset = UnsafeMutablePointer<AUPreset>(CFArrayGetValueAtIndex(presets, i)).memory
    print(preset.presetName.takeUnretainedValue())
}

結果はこちら

Disabled
Acoustic
Bass Booster
Bass Reducer
Classical
Dance
Deep
Electronic
Flat
Hip-Hop
Jazz
Latin
Loudness
Lounge
Piano
Pop
R&B
Rock
Small Speakers
Spoken Word
Treble Booster
Treble Reducer
Vocal Booster

イコライザなのでエフェクタとは異なりますが、使ってみたいですね。

hmdt.jp

参考にいたしました。ありがとうございます。