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 ответ
Эффекты отличаются от генераторов тем, что им нужны входные данные, что и является параметром инициализации. Генератор не принимает входных данных, поэтому его можно инициализировать ни с чем.