Audio 在哪里可以找到编写一个像样的节拍器应用程序的资源?

Audio 在哪里可以找到编写一个像样的节拍器应用程序的资源?,audio,signal-processing,librosa,metronome,Audio,Signal Processing,Librosa,Metronome,最近,我一直在尝试如何编写节拍器应用程序,但在操作系统时间控制(例如调用函数)或显着不准确的开始检测算法(我使用了librosa)方面,我遇到了很多困难,这似乎是一个相当复杂的主题。然而,由于某些原因,我在专业节拍器应用程序源代码/教程/涉及该主题的书籍等方面的研究没有成功。。。网络上似乎充斥着业余的例子和解决方案,它们并不真正符合现代节拍器应用程序(比如Frozenapes iOS Tempo应用程序)的标准。e、 g.一种节拍器,在调用某个节拍时使用预先录制的.wav样本(因此应用程序中存储

最近,我一直在尝试如何编写节拍器应用程序,但在操作系统时间控制(例如调用函数)或显着不准确的开始检测算法(我使用了librosa)方面,我遇到了很多困难,这似乎是一个相当复杂的主题。然而,由于某些原因,我在专业节拍器应用程序源代码/教程/涉及该主题的书籍等方面的研究没有成功。。。网络上似乎充斥着业余的例子和解决方案,它们并不真正符合现代节拍器应用程序(比如Frozenapes iOS Tempo应用程序)的标准。e、 g.一种节拍器,在调用某个节拍时使用预先录制的.wav样本(因此应用程序中存储了30到300 bpm之间的所有节拍)。如果用户想在节拍器工作时改变节拍,这种解决方案似乎有点死路一条。
总而言之,我正在寻找与code/text/whatev相关的专业资源,它不是面向数学毕业生的2000页信号处理书籍,可以帮助我设计一个带有一些录音功能的像样的节拍器。

也许我使用Java编写节拍器的经验会有所帮助。关键不在于系统时钟,而在于计算PCM帧的确切数量,并将click audio PCM置于该点。在44100 fps的采样率下,基本上精确到1/44100秒


我无法建议您如何对PCM进行流式传输,以及如何在帧通过时对帧进行计数。Python是否允许您访问单个帧?

@Philfreihoff的答案是正确的方法。您希望直接写入音频线程,而不是触发事件。我能感觉到你的沮丧,但遗憾的是,这不是回答这类问题的平台。我可以推荐的是在GitHub上搜索类似的项目,这应该会产生足够多的示例。Python Librosa包提供了允许您操纵采样率和帧的功能,但是您将如何实现这种想法呢?如果使用任何类型的循环来调用click sample,则需要控制循环完成其生命周期所需的时间,但时间并不总是相同的。Java有一个类,
javax.sound.sampled.SourceDataLine
,允许流式传输数据。如果Python允许您将字节流式传输到声音系统,那么解决方案是连续流式传输,计算帧数,并使用零作为源(静默时)或单击(有固定数量的字节,也要计算)。播放声音的软件非常准确,比系统操作系统时钟信息更准确。底层的回放代码(Java)采用了“阻塞队列”,以保持时间紧。