Меня интересует разработка приложения с использованием AudioKit, которое принимает вход 5.1, обрабатывает каждый канал по-разному, а затем выводит его на другое устройство вывода.
Сейчас я пытаюсь просто пропустить стереосигнал с одного устройства ввода (Soundflower 2ch) и вывести его на встроенный выход (на моем MBA).
В моем коде я получаю список доступных устройств ввода и вывода и заполняю два всплывающих меню. Когда я делаю выбор с помощью всплывающего меню, оно устанавливает это устройство как вход или выход.
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 бит на моей системе, так как именно это я использую для работы. Есть ли другой тип узла, который я должен использовать?