Я пытаюсь создать график с помощью AVAudioEngine, который принимает входной сигнал с микрофона устройства и поддерживает стереофонический выход.
Прямо сейчас график выглядит так:
[audioEngine.inputNode] --> [Mic input mixer node] --> [Summing mixer node] --> [audioEngine.mainMixerNode]
Поскольку вывод audioEngine.inputNode
равен 1 ch, 48000 Hz, Float32
, я хотел запустить узел микшера после микрофона, чтобы я мог a) отправить сигнал нескольким аудиоустройствам и b) преобразовать в стереосигнал для более интересной маршрутизации, панорамирования и т. Д. *
Тем не менее, аудиопрохождение работает только в том случае, если я задаю весь график в соответствии с форматом ввода 1 ch, 48000 Hz, Float32
, например:
audioEngine.connect(microphoneNode!, to: microphoneInputMixer, format: inputSessionFormat!)
audioEngine.connect(microphoneInputMixer, to: summingMixer, format: inputSessionFormat!)
audioEngine.connect(summingMixer, to: mainMixerNode!, format: inputSessionFormat!)
У меня есть две переменные формата: моно inputSessionFormat
и стерео outputSettingFormat
, что составляет 2 ch, 44100 Hz, Float32, non-inter
.
Как я понял из , документы AVAudioMixerNode должны обрабатывать преобразование формата, но в этом случае он отказывается воспроизводить звук, если все подключения не установлены в одном (моно) формате. Я также проверил этот код с AVAudioConnectionPoint
, но безрезультатно.