AudioKit AKMicrophone不输出任何数据

时间:2018-10-02 17:33:32

标签: swift macos avfoundation audiokit

我正在尝试从麦克风捕获FFT数据。我已经设法使其与类似的代码库一起使用,但是由于macOS Mojave损坏了,因此fft数据始终保持为0。

相关代码:

var fft: AKFFTTap?
var inputDevice: AKDevice? {
    didSet {
        inputNode = nil
        updateAudioNode()
    }
}
var inputNode: AKNode? {
    didSet {
        if fft != nil {
            // According to AKFFTTap class reference, it will always be on tap 0
            oldValue?.avAudioNode.removeTap(onBus: 0)
        }

        fft = inputNode.map { AKFFTTap($0) }
    }
}

[...]

guard let device = inputDevice else {
    inputNode = ViewController.shared.player.mixer
    return
}

do {
    try AudioKit.setInputDevice(device)
}
catch {
    print("Error setting input device: \(error)")
    return
}

let microphoneNode = AKMicrophone()

do {
    try microphoneNode.setDevice(device)
}
catch {
    print("Failed setting node input device: \(error)")
    return
}

microphoneNode.start()
microphoneNode.volume = 3
print("Switched Node: \(microphoneNode), started: \(microphoneNode.isStarted)")

inputNode = microphoneNode
try! AudioKit.start()

所有代码都被调用,没有错误输出,但是fft只是保持空白。通过一些代码重新排序,我会遇到各种各样的错误。 为了完整起见,该类的完整版本为here

最后,我还尝试一对一实现playground中的示例。由于XCode运动场似乎因AudioKit而崩溃,因此我在自己的代码库中进行了尝试,但两者之间也没有区别。例如,AKFrequencyTracker的幅度和频率均为0。

1 个答案:

答案 0 :(得分:0)

我对此不是100%正面的,但我希望您尝试AudioKit v4.5.1。我们绝对修复了AKMicrophone中的一个错误,该错误可能会导致下游后果。我将撤消此答案,并继续寻找它是否固定。让我知道。