Свертка AudioKit

Я пытаюсь использовать Convolution Reverb в приложении для Mac OS. AudioKit 4.03

У меня работает пример игровой площадки, но когда я пытаюсь воспроизвести его в своем приложении, я получаю эту ошибку и без звука.

2017-11-18 20: 21: 36.116436-0500 convolutionVerb тестирование [37554: 4533072] [avae] AVAEInternal.h: 69: _AVAE_Check: обязательное условие ложно: [AVAudioEngine.mm:348:AttachNode: (node! = Nil) ] 2017-11-18 20: 21: 36.116642-0500 convolutionVerb testing [37554: 4533072] Не удалось установить (contentViewController) определяемое пользователем проверяемое свойство на (NSWindow): обязательное условие ложно: node! = Nil

Вот мой код (который представляет собой слегка измененную версию игровой площадки AudioKit)

class ViewController: NSViewController {

override func viewDidLoad() {
    super.viewDidLoad()



    do {
         file = try AKAudioFile(readFileName: "SAMPLES/Bell.wav")
         player = try AKAudioPlayer(file: file)
    }
    catch {print("DIDN'T LOAD")}

    player.looping = true




    let stairwell = bundle.url(forResource: "stairwell", withExtension: "wav", subdirectory: "Impulse Responses")
        let dish = bundle.url(forResource: "dish", withExtension: "wav", subdirectory: "Impulse Responses")

        stairwellConvolution = AKConvolution(player,impulseResponseFileURL: stairwell!,partitionLength: 8_192)
        dishConvolution = AKConvolution(player,impulseResponseFileURL: dish!,partitionLength: 8_192)


        mixer = AKDryWetMixer(stairwellConvolution, dishConvolution, balance: 0.5)
    dryWetMixer = AKDryWetMixer(player, mixer, balance: 0.5)



    AudioKit.output = dryWetMixer
    AudioKit.start()


    stairwellConvolution.start()
    dishConvolution.start()

    player.play()


    // Do any additional setup after loading the view.
}

person aleisterretsiel    schedule 19.11.2017    source источник


Ответы (1)


Сложно сказать наверняка, что это правильно, но рискну предположить, что это как-то связано с жизненным циклом вашего контроллера представления. У вас есть код настройки AudioKit в viewDidLoad, что может быть небезопасно. Я думаю, что это, по крайней мере, стоящий шаг - поместить аудиокод в одноэлементный класс Engine или Conductor, доступный для всего вашего проекта и не привязанный к жизненным циклам пользовательского интерфейса.

person Aurelius Prochazka    schedule 19.11.2017
comment
Благодарю. Я создал синглтон и вызвал (init) из AppDelegate. Но я все равно получаю: 2017-11-18 22: 06: 27.826993-0500 convolutionVerb testing [40604: 4626340] [avae] AVAEInternal.h: 69: _AVAE_Check: необходимое условие ложно: [AVAudioEngine.mm:348:AttachNode: ( node! = nil)] 2017-11-18 22: 06: 27.827318-0500 convolutionVerb testing [40604: 4626340] Требуемое условие неверно: node! = nil - person aleisterretsiel; 19.11.2017
comment
Хорошо, спасибо, что попробовали в первую очередь. Вы хотите поделиться своим проектом или показать экран? - person Aurelius Prochazka; 19.11.2017
comment
Да, я могу отправить вам свой проект! - person aleisterretsiel; 19.11.2017
comment
Я загрузил на gitHub. github.com/paul-hsu/convolutionVerb-testing - person aleisterretsiel; 19.11.2017