我通常不是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
的预期行为。似乎即使缓冲区更长,回调也应该准时进行。