Я новичок в AudioKit и цифровом аудио в целом, так что я уверен, что должно быть что-то, что мне не хватает.
Я пытаюсь получить точное время от AKMetronome, получая метку времени каждый обратный звонок. Время кажется каким-то образом квантованным, и я не знаю, что это такое.
Пример: если для моего метронома установлено значение 120, каждый обратный вызов должен находиться на расстоянии точно 0,5 секунды. Но если я вычислю разницу от одного тика к другому, я получу это:
0.49145491666786256
0.49166241666534916
0.5104563333334227
0.4917322500004957
1014 *1013* 1014 * 0.5104953749978449
0.49178879166720435
0.5103940000008151
0.4916401666669117
Это всегда одно из 2 значений с очень малой погрешностью. Я хочу, чтобы можно было рассчитать, когда наступит следующий тик, чтобы я мог запустить анимацию на несколько кадров вперед, но это затрудняет. Я что-то пропускаю?
edit: Я придумала решение, так как изначально разместила этот вопрос, но я не уверена, единственное или лучшее решение.
Я установил для буфера наименьший размер, используя AKSettings.BufferLength.veryShort
Для самого маленького буфера отметка времени всегда включена в течение одной или двух миллисекунд. Хотя я до сих пор не уверен, правильно ли я это делаю или это предполагаемое поведение AKCallback
. Кажется, что обратный вызов должен быть вовремя, даже с более длинным буфером.