我想知道使用jack audio api使我的应用程序与时基主应用程序保持同步的正确方法。
假设我有Hydrogen 鼓机以主模式运行,我想在 Hydrogen 播放的每个 1/4 音符上打印一条消息。
这就是我会做的直观(使用python):
#!/usr/bin/env python3
import time
import jack
client = jack.Client('klicker')
def print_msg (last_tick):
state, pos = client.transport_query()
if state == jack.ROLLING:
if pos['tick'] < last_tick:
print ("klick")
return pos['tick']
with client:
last_tick = 0
while True:
last_tick = print_msg (last_tick)
time.sleep(0.00002)
所以我正在运行一个睡眠时间很少的循环,如果当前节拍已经结束,则检查每次迭代。
这对我来说似乎有点肮脏和不精确。那么解决这个问题的正确方法是什么?