我是 AudioKit 和编程音乐应用程序的新手。我正在构建一个节拍器应用程序并使用 AudioKit 的 AKMetronome。我想要一个功能,用户可以指定一系列不同节奏的节拍模式。但是我发现使用苹果的 DispatchQueue 是不准确的。
我正在考虑使用 AKSequencer 重写节拍器。有没有办法使用 AudioKit 的音序器即时更改速度或生成具有多个不同速度的序列?(音序器示例:https ://github.com/AudioKit/Cookbook/blob/main/Cookbook/Cookbook/Recipes/Shaker.swift )
metronome.tempo = 120
let first_interval = 60.0 / 120.0
let switchTime1 = DispatchTime.now() + (first_interval * 4.0)
metronome.play()
DispatchQueue.main.asyncAfter(deadline: switchTime1, execute: {
self.metronome.tempo = 200
})
let second_inter = 60.0 / 200.0
let switchTime2 = switchTime1 + (second_inter * 8.0)
DispatchQueue.main.asyncAfter(deadline: switchTime2, execute: {
self.metronome.tempo = 120
})
更新:
我发现您可以使用 AKMetronome.callback 为 AKMetronome 分配一个回调函数。(https://audiokit.io/docs/Classes/AKMetronome.html#/s:8AudioKit11AKMetronomeC8callbackyycvp)然后您可以在新序列开始时更新速度。