Audiokit/swift newbie: массив AKOperationEffect

Я не могу найти способ объявить массив AKOperationEffect,

У меня есть два "модулятора", которые объявлены отдельно. Как я могу использовать let modulator = [AKOperationEffect]() так что я могу использовать modulator.append(AKOperationEffect()) как я делаю для AKOscillator? Когда я делаю это, он запрашивает у меня параметр init, и я не могу понять, что это такое. Я уверен, что есть базовое недопонимание этого класса, которое я не могу понять из учебников.

Спасибо за помощь!

import Foundation
import AudioKit

class AudioEngine {

    var oscillator = [AKOscillator]()
    var dualMixer = [AKMixer]()

    init() {
        for index in 1...8 {
            oscillator.append(AKOscillator())
            oscillator[index-1].amplitude = 1
            oscillator[index-1].frequency = 110 * index
        }

        for index in 1...4 {
            dualMixer.append(AKMixer(oscillator[index-1], oscillator[index+2]))
        }

        let modulatorOne = AKOperationEffect(dualMixer[0]) { input, parameters in

            return input * ((AKOperation.sineWave(frequency: parameters[0], amplitude: 1) + 1) / 2)
        }

        let modulatorTwo = AKOperationEffect(dualMixer[1]) { input, parameters in

            return input * ((AKOperation.sineWave(frequency: parameters[0], amplitude: 1) + 1) / 2)
        }

        modulatorOne.parameters[0] = 2
        modulatorTwo.parameters[0] = 3
        modulatorOne.start()
        modulatorTwo.start()


        let mixer = AKMixer(modulatorOne, modulatorTwo)

        AudioKit.output = mixer
        do {
            try AudioKit.start()
        } catch {
            print(error)
        }
    }
}

1 ответ

Эффекты отличаются от генераторов тем, что им нужны входные данные, что и является параметром инициализации. Генератор не принимает входных данных, поэтому его можно инициализировать ни с чем.

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