Аудиокит Аудиобус MVC Нет звука

У меня работает прототип Audiokit, который использует Audiobus на iOS. Я загружаю задержку эффектов, вход, выход AudioKit, микшер и т. Д. В контроллер представления, и все работает как положено.

Я сейчас пытаюсь рефакторинг для использования шаблона MVC. Я создал класс Conductor и класс задержки. Я переместил запуск Audiokit, запуск Audiobus и т. Д. В проводник. Я не получаю ошибок при сборке или запуске. Я также не получаю звук, проходящий через этот момент.

Задержка - это всего лишь пример MultiDelay, и она устанавливает AKNode и AKInput.

Я пропускаю что-то простое в этом?

Пример MVC Audiokit

ViewController...

import AudioKit
import AudioKitUI
import UIKit

class ViewController: UIViewController {

// Create instance of Conductor
let conductor = Conductor.sharedInstance

/// Views
let stackView = UIStackView()
/// Views

override func viewDidLoad() {
    super.viewDidLoad()

    setupUI()
}

func setupUI() {

    stackView.axis = .vertical
    stackView.distribution = .fillEqually
    stackView.alignment = .fill
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.spacing = 10

    /// Delay
    // Simple Delay
    // Range and Type = Delay time in seconds (Default: 1)
    stackView.addArrangedSubview(AKRotaryKnob(
        property: "Simple Delay Time",
        value: conductor.delay.time,
        format: "%0.2f s") { sliderValue in
            self.conductor.delay.time = sliderValue
    })
    // Range and Type = Feedback (Normalized Value) ranges from 0 to 1 (Default: 0.5)
    stackView.addArrangedSubview(AKRotaryKnob(
        property: "Simple Delay Feedback",
        value: conductor.delay.feedback,
        range: 0.0 ... 0.99,
        format: "%0.2f s") { sliderValue in
            self.conductor.delay.feedback = sliderValue
    })
    // Range and Type = Dry/Wet Mix (Normalized Value) ranges from 0 to 1 (Default: 0.5)
    stackView.addArrangedSubview(AKSlider(
        property: "Simple Delay Dry/Wet Mix",
        value: self.conductor.delayDrMixer.balance,
        range: 0.0 ... 0.99,
        format: "%0.2f") { sliderValue in
            self.conductor.delayDrMixer.balance = sliderValue
    })

    stackView.addArrangedSubview(AKSlider(
       property: "Output Volume",
       value: conductor.booster.gain,
       range: 0 ... 2,
       format: "%0.2f") { sliderValue in
           self.conductor.booster.gain = sliderValue
   })
   /// Output Volume Section

   view.addSubview(stackView)

   stackView.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.9).isActive = true
   stackView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.9).isActive = true
   stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
   stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
   }
}

Дирижер...

import Foundation
import AudioKit

class Conductor: AKMIDIListener {

     // Globally accessible singleton
    static let sharedInstance = Conductor()
    let input = AKStereoInput()

    // Simple Delay
    // Example using AudioKit class but you could use your own 
    // custom class instead.
    var delay: AKDelay!  
    var delayDrMixer: AKDryWetMixer!

    var booster: AKBooster!
    var mixer = AKMixer()

    init() {
        AKSettings.audioInputEnabled = true

        // Simple Delay
        delay = AKDelay(input) // Route audio input into delay node
        delayDrMixer = AKDryWetMixer(input, delay) // route input and delay into dry wet mixer

        // Master Mixer
        mixer = AKMixer(delayDrMixer) // Route audio int final mix node

        // Set Output & Start AudioKit
        AudioKit.output = mixer // route mix to output
        do {
            try AudioKit.start()
        } catch {
            AKLog("Audiokit start failed")
        }
        Audiobus.start()
   }
}

0 ответов

Другие вопросы по тегам