我是 AudioKit 和一般数字音频的新手,所以我确信一定有我遗漏的东西。
我试图通过获取每个回调的时间戳来从 AKMetronome 获得精确的时间。不过,时间似乎以某种方式被量化了,我不知道它是什么。
示例:如果我的节拍器设置为 120,则每个回调应该恰好相隔 0.5 秒。但是,如果我计算从一个滴答声到下一个滴答声的差异,我会得到:
0.49145491666786256
0.49166241666534916
0.5104563333334227
0.4917322500004957
0.5104953749978449
0.49178879166720435
0.5103940000008151
0.4916401666669117
它始终是 2 个值之一,误差范围非常小。我希望能够计算下一个滴答声何时到来,这样我就可以提前几帧触发动画,但这很困难。我忽略了什么吗?
编辑:自从我最初发布这个问题以来,我想出了一个解决方案,但我不确定它是唯一还是最好的解决方案。
我使用将缓冲区设置为最小大小AKSettings.BufferLength.veryShort
使用最小的缓冲区,时间戳总是在一两毫秒内打开。我仍然不确定我是否做对了,或者这是否是AKCallback
. 即使缓冲区更长,回调似乎也应该准时。