Я использую новый AVAudioSourceNode для предоставления потока сэмплов для воспроизведения через мой аудиоинтерфейс.
Однако я обнаружил, что AVAudioSourceNode выбирает свои собственные настройки формата.
engine.connect(srcNode, to: engine.mainMixerNode, format: stimulusFormat)
Я использую приведенную выше строку кода, чтобы подключить мой исходный узел к основному микшеру, используя формат'timulusFormat '. Я установил этот формат, используя:
let stimulusFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32,
sampleRate: Double(sampleRate),
channels: 1,
interleaved: format.isInterleaved)
(спараметр с чередованием, запрашивающий то, что ожидает увидеть результат). Однако всякий раз, когда я запрашиваю формат моего srcNode (AVAudioSourceNode), консоль возвращает
<AVAudioFormat 0x600002131810: 2 ch, 44100 Hz, Float32, non-inter>
, поэтому ясно, что формат потока не установлен в строке соединения. Я также попытался изменить предпочтительную частоту дискретизации, однако это по-прежнему не меняет частоту дискретизации AVSourceNode. Все остальное в моем звуковом движке работает на частоте 48000 Гц, поэтому я не уверен, откуда он получает этот номер.
try AVAudioSession.sharedInstance().setCategory(.playAndRecord)
try AVAudioSession.sharedInstance().setPreferredSampleRate(Double(sampleRate))
Кто-нибудь может предложить способ определения формата потока?