【发布时间】:2020-07-24 16:24:06
【问题描述】:
我是 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 的预期行为。即使缓冲区更长,回调似乎也应该准时。
【问题讨论】:
标签: swift audio audiokit metronome