Итак, я новичок в изучении Swift, а также плохо знаком с фреймворком AudioKit. Я следовал нескольким примерам, таким как Hello World и Microphone Analysis, чтобы узнать, как использовать микрофон, а также как воспроизводить звук. Вместе эти задачи работают, но как только я начал подключаться к узлу в моей функции ViewDidAppear (), построение графиков перестало работать, даже если я вызвал свою функцию setupPlot (). С AKNodes, должны ли быть отдельные узлы для каждой из задач? Вот как выглядит мой код ниже:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
AudioKit.output = silence
AudioKit.output = AKMixer(oscillator)
do {
try AudioKit.start()
} catch {
AKLog("AudioKit did not start!")
}
setupPlot()
// Tapping here stops plotting
initMicrophone(mic)
Timer.scheduledTimer(timeInterval: 0.1,
target: self,
selector: #selector(ViewController.updateUI),
userInfo: nil,
repeats: true)
}
func initMicrophone(_ input: AKNode?){
input?.avAudioNode.removeTap(onBus: 0)
input?.avAudioNode.installTap(
onBus: 0, bufferSize: bufferSize, format: nil
) { [weak self] (buffer, _) in
guard let strongSelf = self else {
print("Recorder: Unable to create strong reference to self #1")
return
}
buffer.frameLength = strongSelf.bufferSize
let offset = Int(buffer.frameCapacity - buffer.frameLength)
if let tail = buffer.floatChannelData?[0] {
let samples = Array(UnsafeBufferPointer(start: &tail[offset], count: 4096))
print(samples) //size of array of samples is 4096
}
}
}