作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道使用 jack audio api 使我的应用程序与时基主应用程序保持同步的正确方法。 .
假设我有 Hydrogen drum machine在主模式下运行,我想在氢气播放的每 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)
最佳答案
最后,我找到了一个更精确的解决方案:
首先,我们要使用进程回调而不是无限循环。
def process (f):
f
处理的帧数。采样率告诉我们我们将在 1 秒内处理多少帧。通过将其乘以 60 并除以
beats per minute
的数量我们得到一拍中处理的帧数。
#!/usr/bin/env python3
import jack
client = jack.Client('Klick')
frame_counter = 0
@client.set_process_callback
def process (f):
global frame_counter
state, pos = client.transport_query()
if state == jack.ROLLING:
frame_counter += f
# how many frames are get processed in 1 beat?
frames_per_beat = client.samplerate * 60 / pos['beats_per_minute']
# did we process enough frames for 1 beat?
if frame_counter >= frames_per_beat:
print ('klick')
frame_counter -= frames_per_beat
with client:
client.activate()
input()
关于python - 插孔音频 - 将应用程序同步到主控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103136/
我想将 iOS VoiceOver 声音定向到耳机,即使它没有插入。 换句话说,当我的应用程序打开时,VoiceOver 声音(以及我在应用程序中使用 AVSpeechUtterance 等播放的其他
我是一名优秀的程序员,十分优秀!