audiokit:同时播放两个振荡器

时间:2016-04-15 18:08:56

标签: ios audio sine mixer audiokit

您好我正在使用AudioKit - 它是一个出色的框架,到目前为止我很高兴学习它。我正在研究一个HelloWorld示例,并且有一个用于触发振荡器的UI按钮的代码......

我的问题是:如果我想同时播放两个振荡器音调,例如432Hz和一个完美的五分之一(比例为3:2,那么648Hz),我怎样才能让它们同时播放?正确的设计模式是否为每个“音调”提供了一个新节点?

class ViewController: UIViewController {

    var oscillator = AKOscillator()
    var osc2 = AKOscillator()

    override func viewDidLoad() {
        super.viewDidLoad()

        AudioKit.output = oscillator
        AudioKit.start()
    }

    @IBAction func toggleSound(sender: UIButton) {
        if oscillator.isPlaying {
            oscillator.stop()
            sender.setTitle("Play Sine Wave", forState: .Normal)
        } else {
          oscillator.amplitude = 1 //was:: random(0.5, 1)
          oscillator.frequency = 432 //was:: random(220, 880)
          osc2.amplitude = 1
          osc2.frequency = 648 //3:2 from 432Hz
            sender.setTitle("Stop Sine Wave at \(Int(oscillator.frequency))Hz", forState: .Normal)
        }
        sender.setNeedsDisplay()
    }

}

如何将两个振荡器连接在一起,以便它们可以一起唱歌?

1 个答案:

答案 0 :(得分:10)

尝试AKMixer节点:

var mixer = new AKMixer(oscillator, osc2)
AudioKit.output = mixer
try! AudioKit.start()