AudioKit AKMicrophone не выводит никаких данных - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь захватить данные 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 просто остается пустым.С некоторым переупорядочением кода я получаю различные ошибки.Полная версия класса, для полноты, здесь .

Наконец, я также попытался реализовать один к одному примеры с детской площадки .Так как игровые площадки XCode, похоже, вылетали из-за AudioKit, я попробовал это в своей собственной кодовой базе, но и в этом нет разницы.Например, AKFrequencyTracker получает 0 с для амплитуды и частоты.

1 Ответ

0 голосов
/ 03 октября 2018

Я не на 100% уверен в этом, но я бы хотел, чтобы вы попробовали AudioKit v4.5.1.Мы определенно исправили ошибку в AKMicrophone, и это может иметь последующие последствия.Я заберу этот ответ и продолжу искать, если он не исправлен.Дайте мне знать.

...