audiokit:同时播放两个振荡器

Posted

技术标签:

【中文标题】audiokit:同时播放两个振荡器【英文标题】:audiokit: playing two oscillators simultaneously 【发布时间】:2016-08-07 20:03:51 【问题描述】:

您好,我正在使用 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()
    


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

【问题讨论】:

AudioKit.output 需要什么?我不知道图书馆,但我认为它会是AudioKit.output = oscillator + osc2? @yun.cloud 它需要一个 AKNode(audioKit 节点),所以必须有一种方法可以将它们组合起来或链接它们...感谢您的建议,Xcode 正在回复:) 【参考方案1】:

试试 AKMixer 节点:

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

【讨论】:

以上是关于audiokit:同时播放两个振荡器的主要内容,如果未能解决你的问题,请参考以下文章

Audiokit:(V5)音序器无法在轨道的同一位置同时播放音符

AudioKit - 使用音序器在特定位置播放声音文件

如何使用 AudioKit 的新 AKSequencer 播放 MIDI

#AudioKit 播放音序器音频 mp3

AudioKit:如何更改使用 AKMIDIEvent 播放的音符的音量或音高?

AudioKit 崩溃 - 如何用它播放音频文件?