这是here中讨论的延续。
我正在为Swift中的iOS构建一个录音笔应用程序,我有一个自定义波形图形,我从AKFFTTap对象提供数据。我有一个问题,FFT在一段时间后开始生成全零。为了诊断和解决这个问题,我试图在用户开始记录时重新初始化所有节点和点击(假设这将解决问题)。以前,AudioKit已经初始化并在视图加载时启动,就是这样。
所以,现在我尝试重新分配每个录音的所有内容,除了每次重新录制(所以不是第一个,但后面的一个)之外,它都可以工作,FFT不能再次工作了。这一次它是一致的和可重复的。
所以,这就是我正在做的事情,如果有人能告诉我出错的地方,我将非常感激:
录制开始时,我正在做:
mic = AKMicrophone() //needs to be started
fft = AKFFTTap.init(mic) //will start when mic starts
//now, let's define a mixer, and add the mic node to it, and initialize the recorder to it
micMixer = AKMixer(mic)
recorder = try AKNodeRecorder(node: micMixer)
micBooster = AKBooster(micMixer, gain: 0)
AudioKit.output = micBooster
try AudioKit.start()
mic.start()
micBooster.start()
try recorder.record()
录制停止时:
//now go back deallocating stuff
recorder.stop()
micBooster.stop()
micMixer.stop()
mic.stop()
//now set player file to recorder file, since I want to play it later
do {
if let file = recorder.audioFile {
player = try AKAudioPlayer(file: file, looping: false, lazyBuffering: false, completionHandler: playingEnded)
try AudioKit.stop()
} else {
//handle no file error
}
}
catch {
//handle error
}
那么,任何人都可以帮我弄清楚为什么FFT第二次无效?
谢谢!