java - 用于 MIDI 音序器的 Scala 中最准确的计时器
问题描述
我正在使用 Scala 中的音乐应用程序来实时生成 MIDI 序列。MIDI 消息被发送到另一个应用程序(Ableton DAW),甚至可能是外部硬件。对于这个用例来说,准确的时间是非常重要的,否则产生的音乐会听起来不合时宜。
我试着用java.util.Timer
不同的序列来安排笔记,但显然那个计时器可以漂移数百毫秒。
在 Scala(或 Java)中使用的最准确的计时器是什么,这甚至是在 JVM 上尝试完成的合理任务吗?或者我可能会错了?
解决方案
通常的计时器实现基于调度程序。如果您需要准确性,您可以自己滚动:
def after(when: Duration)(f: => Unit) {
val deadline = when.fromNow
while(! deadline.isOverdue) ()
f
}
这会像疯了一样烧毁你的CPU,但没有比这更准确的了。
推荐阅读
- regex - Google Documents - 删除段落结尾处的多余空格字符
- python - 为什么两个列表都被更改而只有 1 个元组被更改
- arrays - 汇编程序中的整数数组
- vba - 使用公式从字符串中提取两个数字
- python - 从熊猫中具有相应值的所有行形成单行
- android - 在android 10中excrption的字符0处输入结束
- flutter - 带有 AnimationController 的 GridView 无法正常工作
- php - 如何将 localhost 数据库连接到另一个服务器数据库并使用 codeigniter 插入表单值?
- linux - 使用 mkdir 数据设置后全新安装 gogs 出现恐慌:权限被拒绝
- pandas - 基于 TF -IDF 将每个文档转换为向量