AKFFTTap stops working when initialized second time

﹥>﹥吖頭↗ 提交于 2019-12-22 22:22:26

问题


This is a continuation of the discussion in here.

I'm building a voice recorder app for iOS in Swift, and I have a custom waveform graphic that I feed data to from a AKFFTTap object. I had a problem that the FFT starts generating all zeros after a while. In order to diagnose and solve this, I'm trying to re-initialize all the nodes and taps whenever the user starts recording (assuming that would solve the issue). Previously, AudioKit was initialized and started when the view was loaded, and that's it.

So, now I try to re-allocate everything each recording, and it works, except that every re-recording (so not the first one, but the one after), the FFT doesn't work again. This time it's consistent and reproducible.

So, here's what I'm doing, and if anyone can show me where I'm going wrong, I'll be very grateful:

When recording starts, I'm doing:

        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()

When recording stops:

//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
}

So, can anyone please help me figure out why the FFT doesn't work the second time around?

Thanks!

来源:https://stackoverflow.com/questions/49715721/akffttap-stops-working-when-initialized-second-time

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!