AVAudioEngine mainMixerNode панорамирование не работает - PullRequest
0 голосов
/ 27 марта 2020

У меня есть следующий метод для воспроизведения файла.

let filePath = "/Users/fractor/Desktop/TestFile.mp3"
var file : AVAudioFile?
var audioEngine = AVAudioEngine()
var playerNode = AVAudioPlayerNode()

@IBAction func play(_ sender: Any) {

    do {
        file = try AVAudioFile(forReading: URL(fileURLWithPath: filePath))
    } catch let error {
        print(error.localizedDescription)
        return
    }

    audioEngine.attach(playerNode)
    audioEngine.connect(playerNode, to: audioEngine.mainMixerNode, format: file!.processingFormat);

    do {
        try audioEngine.start()
    } catch let error {
        print(error.localizedDescription)
        return
    }

    audioEngine.mainMixerNode.pan = 100 // No effect

    playerNode.scheduleFile(file!, at: nil){}

    DispatchQueue.global(qos: .background).async {
        print("audioEngine.isRunning = \(self.audioEngine.isRunning)");
        self.playerNode.play();
        print("playerNode.isPlaying = \(self.playerNode.isPlaying)");
    }
}

Файл воспроизводится нормально, но значение панорамирования не действует. Я пробовал разные значения (-1, 1, -100, +100), и для всех этих параметров стереофоническое воспроизведение остается посередине.

Что мне нужно сделать, чтобы панорамирование работало?

1 Ответ

1 голос
/ 27 марта 2020

Я думаю, что проблема в том, что основной узел микшера не может использоваться таким образом. Вы должны представить другой узел микшера и установить его pan или установить pan непосредственно на AVAudioPlayerNode.

...