Ошибка предустановки загрузки AVAudioUnit - PullRequest
0 голосов
/ 27 февраля 2019

Я создал простой .aupreset с помощью программного обеспечения Apple AULab, которое является пресетом реверберации (я хочу добавить его в аудиофайл, чтобы у аудиофайла был уровень реверберации).При попытке загрузить пресет в AVAudioUnit, я всегда получаю эту ошибку:

Ошибка домена = Foundation._GenericObjCError Code = 0 "(null)"

Если яиспользовать попробовать!это аварийное сообщение:

Тема 1: Неустранимая ошибка: 'попробуй!'выражение неожиданно вызвало ошибку: Foundation._GenericObjCError.nilError

Строка кода, вызывающая ошибку:

try customPresetUnit.loadPreset(at: presetURL)

Вот весь метод:

let player = AVAudioPlayerNode()
let engine = AVAudioEngine()
let reverb = AVAudioUnitReverb()
let customPresetUnit = AVAudioUnit()

func addPresetToIntro(){
    guard let introductionAudio = Bundle.main.url(forResource: "Introduction", withExtension: "m4a") else{fatalError("Introduction file not found")}
    guard let presetURL = Bundle.main.url(forResource: "FirstPreset", withExtension: "aupreset") else{fatalError("preset not found")}
    do {
        try customPresetUnit.loadPreset(at: presetURL)
    }
    catch {
        print((error as NSError))
        return
    }

    let audioFile = try! AVAudioFile(forReading: introductionAudio)
    engine.attach(player)
    engine.attach(customPresetUnit)
    engine.connect(player, to: customPresetUnit, format: nil)
    engine.connect(customPresetUnit, to: engine.mainMixerNode, format: nil)

    player.scheduleFile(audioFile, at: nil, completionHandler: nil)
    try! engine.start()
    player.play()
}

Любые идеи очень ценятся!

Примечание. Да, я знаю, что могу создать эффект реверберации с помощью AVAudioUnitReverb, однако я хочу, чтобы он работал с файлами .aupreset, когда я создаю более сложные.

...