Scala中最精确的MIDI音序器计时器

时间:2018-08-26 01:57:36

标签: java scala timer midi ableton-live

我正在Scala中开发一个音乐应用程序,以实时生成MIDI序列。 MIDI消息被发送到另一个应用程序(Ableton DAW),甚至可能发送到外部硬件。在这种情况下,准确的时间安排非常重要,否则产生的音乐将在非工作时间听起来。

我尝试使用java.util.Timer将音符安排在不同的序列上,但显然计时器可能会漂移数百毫秒。

在Scala(或Java)中使用的最准确的Timer是什至可以尝试在JVM上完成的合理任务吗?还是我要解决所有这些错误?

1 个答案:

答案 0 :(得分:0)

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

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

这将使您的cpu像疯了似的,但是没有比这更准确的了。