【发布时间】:2022-02-09 02:29:30
【问题描述】:
所以我想构建一个节拍器并决定使用 pyaudio。我知道还有其他方法,但我想稍后再用它制作其他东西。
到目前为止,这就是我的代码:
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
def play_audio(filename):
wf=wave.open(filename,"rb")
p=pyaudio.PyAudio()
stream_play=p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while True:
if data != '':
stream_play.write(data)
data = wf.readframes(CHUNK)
if data == b"":
break
stream_play.stop_stream()
stream_play.close()
p.terminate()
def metronom(bpm):
while True:
play_callback(beep)
time.sleep(60/bpm)
beep="beep-07a.wav"
我认为它成功了,但不幸的是,时机完全不对。我也尝试了回调函数,但时间错误。
解决方案现在看起来像这样
def metronom(bpm):
while True:
startTime = time.time()
play_callback(beep)
endTime=time.time()-startTime
time.sleep(60/bpm-endTime)
【问题讨论】: