如何解决Swift:如何在节拍器中计算正确的调度时间
我正在我的应用程序中开发节拍器,我想实现一个功能,让节拍器可以在特定时间改变其速度。例如,以速度 = 120 bpm 播放 4 节拍,然后以速度 = 200 bpm 播放 8 节拍,然后回到 120 bpm。
我通过使用 AudioKit 的 AKMetronome 来尝试这个,并使用 DispatchQueue.main.asyncAfter 更新速度。然而,节奏有点偏离并且有明显的滞后。是计算错误还是我遗漏了什么?
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
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。