Как программно установить панорамирование в iOS?
Я создал UISlider в Интерфейсном Разработчике и хочу использовать его для регулировки баланса громкости звука L/R между двумя каналами. Вот мой существующий код:
import UIKit
class StreamBalanceTableViewCell: AudioStreamTableViewCell {
static let identifier = "StreamBalanceTableViewCell"
override func awakeFromNib() {
super.awakeFromNib()
self.slider.minimumTrackTintColor = .gray
self.slider.maximumTrackTintColor = .gray
}
@IBOutlet var slider: UISlider!
override func updateUI() {
var sliderValue: Float = 0.0
sliderValue = self.audioInterface?.balance ?? 0.0 //Rescale pan [-1,1]
self.slider.value = (sliderValue / 2.0) + 0.5 // to desired slider range [0,1]
self.slider.isEnabled = !(self.audioInterface?.muted ?? true)
setSliderAccessibilityValue()
}
func setSliderAccessibilityValue() {
let right_percent = Int(
round(slider.value * 10) //=> round(0.2632 * 10) => round(2.632) => 3
) * 10 //=> 30
// 30% = right %
let left_percent = 100 - right_percent // |
// left|..V......|right
// balance: 70% left, 30% right
let accValue = "\(left_percent)% left, \(right_percent)% right"
slider.accessibilityValue = accValue
}
@IBAction func sliderChanged(_ slider: UISlider) {
self.audioInterface?.balance = (slider.value - 0.5) * 2.0 //Rescale slider [0,1] to balance [-1,1]
setSliderAccessibilityValue()
}
}
Как я могу взять выходные данные этого ползунка и программно установить левую / правую позицию панорамирования в моем iOS-приложении?
Самая многообещающая вещь, о которой я читал, - это создать AUGraph, добавить к нему аудиоустройство MultichannelMixer и настроить параметр kMultiChannelMixerParam_Pan. Это лучший способ? Как это будет сделано?