Python 在InputStream中,blocksize做什么?(音响设备)
我正在用sounddevice构建一个吉他调谐器GUI。这是我录制部分的代码:Python 在InputStream中,blocksize做什么?(音响设备),python,callback,python-sounddevice,Python,Callback,Python Sounddevice,我正在用sounddevice构建一个吉他调谐器GUI。这是我录制部分的代码: def流(自): 如果self.stream不是None: self.stream.close() self.stream=sd.InputStream( 通道=1,回调=self.callback,块大小=…) self.stream.start() 这是回调: #tunertools是另一个包含在数组上计算的函数的文件 def回调(indata、帧、时间、状态): 打印(indata) data=indata.
def流(自):
如果self.stream不是None:
self.stream.close()
self.stream=sd.InputStream(
通道=1,回调=self.callback,块大小=…)
self.stream.start()
这是回调:
#tunertools是另一个包含在数组上计算的函数的文件
def回调(indata、帧、时间、状态):
打印(indata)
data=indata.copy()
yin,*others=tunertools.yin(数据、帧)
音高=调谐器音高。平均音高(阴)
noteslist={k:v代表k,v在tunertools.notes()中]
注释=调谐otls.quantize(音调、注释列表值)
打印({v:k for(k,v)in noteslist.values()}[note])
现在,我正在终端中打印输出。我希望每录制4秒打印一次新输出。这意味着每4秒,回调函数应该启动一次。我该怎么做?更重要的是,我是否需要使用blocksize参数来执行此操作?回调函数的调用速率由
blocksize
确定。如果将blocksize
设置得更大,则调用回调的频率会降低
如果您希望以不同于调用回调的速率获取信息,可以查看示例,该示例使用单独的函数获取信息,并使用queue.queue
进行通信
如果您只想在每次(比如第三次)调用回调时执行一些代码,只需使用一个全局计数器变量,并在回调中检查和递增它。回调函数的调用速率由
blocksize
确定。如果将blocksize
设置得更大,则调用回调的频率会降低。如果您希望以不同于调用回调的速率获取信息,可以查看示例,该示例使用单独的函数获取信息,并使用队列。队列用于它们之间的通信。好的,谢谢!将此作为答案发布,我将接受。