0

我正在使用 Scala 中的音乐应用程序来实时生成 MIDI 序列。MIDI 消息被发送到另一个应用程序(Ableton DAW),甚至可能是外部硬件。对于这个用例来说,准确的时间是非常重要的,否则产生的音乐会听起来不合时宜。

我试着用java.util.Timer不同的序列来安排笔记,但显然那个计时器可以漂移数百毫秒。

在 Scala(或 Java)中使用的最准确的计时器是什么,这甚至是在 JVM 上尝试完成的合理任务吗?或者我可能会错了?

4

1 回答 1

0

通常的计时器实现基于调度程序。如果您需要准确性,您可以自己滚动:

def after(when: Duration)(f: => Unit) { 
  val deadline = when.fromNow
  while(! deadline.isOverdue) ()
  f
}

这会像疯了一样烧毁你的CPU,但没有比这更准确的了。

于 2018-08-26T02:15:45.870 回答