Как программно установить панорамирование в 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. Это лучший способ? Как это будет сделано?

0 ответов

Другие вопросы по тегам