错误消息的含义是什么"调度程序队列已满?#34;在supercollider?

时间:2016-10-25 18:57:55

标签: scheduling supercollider

我正在使用一个包含TempoClock.default.sched [我正在准备MWE]的函数的类。如果我创建该类的新实例并应用该函数,我会收到以下错误消息:

  

调度程序队列已满。

此消息一直重复。这是什么意思?

1 个答案:

答案 0 :(得分:2)

每个时钟都有一个存储预定事件的队列。队列的大小非常大 - 但仍然有限(我认为~4096项?)。当此队列已满时,会发生“scheduler cue is full”错误 - 当您合法地在给定时钟上安排超过4096个事件时,可能会发生这种情况。但是,一个常见的错误案例是在将来意外排队事件,这样它们就会永远挂在队列中,最终填满它。如果你这样做很容易,例如调用.sched(...),它取一个相对时间值,但尝试传递一个绝对时间(这将在将来远远安排事件)。

如果你需要在给定时间实际安排超过4096个事件 - 我相信Scheduler类有一个可以任意大的队列。 AppClock使用此调度程序,因此它不应该有大量事件的问题。但是 - AppClock的时间不如SystemClock准确,并且不适合细粒度的音乐事件。如果您需要高度精确的计时,您可以使用多个TempoClock,例如为每种乐器使用不同的乐器,或每种不同类型的事件等。