AudioKit - маршрутизация многоканального сигнала через приложение (macOS, swift) - PullRequest
1 голос
/ 03 апреля 2019

Меня интересует разработка приложения с использованием AudioKit, которое принимает вход 5.1, обрабатывает каждый канал по-разному, а затем выводит его на другое устройство вывода.

Сейчас я пытаюсь просто пропустить стереосигнал с одного устройства ввода (Soundflower 2ch) и вывести его на встроенный выход (на моем MBA).

В моем коде я получаю список доступных устройств ввода и вывода и заполняю два всплывающих меню. Когда я делаю выбор с помощью всплывающего меню, оно устанавливает это устройство как вход или выход.

enter image description here

func changeInputDevice() {

    let currentInputName = audioInputMenu.titleOfSelectedItem
    var currentInputID: UInt32 = 0

    if currentInputName == "None" {
        print("No input device selected")
        return
    }

    if let inputs = AudioKit.inputDevices {
        for device in inputs {
            if device.name == currentInputName {
                currentInputID = device.deviceID
                print("Number of channels: \(device.nInputChannels!)")
            }
        }
    }

    do {
        try AudioKit.setInputDevice(AKDevice(name: currentInputName!, deviceID: currentInputID))
        print("Input Device Initiated")
    } catch {
        print("error loading input device")
    }
}

Мой вопрос сейчас заключается в том, куда мне идти, чтобы направить входной аудиосигнал на выход, и при работе с большим количеством каналов, чем стерео, как определить, какой канал может идти на какой выход?

Я попытался создать AKMicrophone () и настроить AudioKit.output для этого микрофона ...

func startEngine() {

    let format = AVAudioFormat(standardFormatWithSampleRate: 48000, channels: 2)

    let inputChannels = AKMicrophone(with: format)

    AudioKit.output = inputChannels

    do {
        try AudioKit.start()
    } catch {
        print("error starting AudioKit Engine")
    }

}

... но я получаю эту ошибку в консоли:

2019-04-03 10:54:25.736287-0400 Studio EQ[6895:3586453] [avae] AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:911:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]

Все устройства ввода и вывода настроены на 48 кГц, 24 бит на моей системе, так как именно это я использую для работы. Есть ли другой тип узла, который я должен использовать?

...