supercollider中的错误信息"scheduler queue is full"是什么意思?
What is the meaning of the error message "scheduler queue is full" in supercollider?
我正在使用 class,其中包含涉及 TempoClock.default.sched
的函数 [我正在准备 MWE]。如果我创建 class 的新实例并应用该函数,我会收到以下错误消息:
scheduler queue is full.
这条消息一直在重复。这是什么意思?
每个时钟都有一个队列来存储预定的事件。队列的大小非常大 - 但仍然有限(我认为 ~4096 项?)。 "scheduler cue is full" 错误发生在队列已满时——当您在给定时钟上合法地安排了超过 4096 个事件时,就会发生这种情况。但是,一个常见的错误案例是不小心将未来的事件排队,这样它们就会永远挂在队列中,最终填满队列。如果您,例如,这样做很容易。调用 .sched(...),它采用相对时间值,但尝试将绝对时间传递给它(这会将事件安排在很远的将来)。
如果您需要在给定时间实际安排超过 4096 个事件 - 我相信调度程序 class 有一个可以任意大的队列。 AppClock 使用此调度程序,因此处理大量事件应该不会有问题。但是 - AppClock 的计时不如 SystemClock 准确,并且不适合细粒度的音乐事件。如果您需要高度准确的计时,您可以使用多个 TempoClocks,例如对每种乐器或每种不同类型的事件等使用不同的
我正在使用 class,其中包含涉及 TempoClock.default.sched
的函数 [我正在准备 MWE]。如果我创建 class 的新实例并应用该函数,我会收到以下错误消息:
scheduler queue is full.
这条消息一直在重复。这是什么意思?
每个时钟都有一个队列来存储预定的事件。队列的大小非常大 - 但仍然有限(我认为 ~4096 项?)。 "scheduler cue is full" 错误发生在队列已满时——当您在给定时钟上合法地安排了超过 4096 个事件时,就会发生这种情况。但是,一个常见的错误案例是不小心将未来的事件排队,这样它们就会永远挂在队列中,最终填满队列。如果您,例如,这样做很容易。调用 .sched(...),它采用相对时间值,但尝试将绝对时间传递给它(这会将事件安排在很远的将来)。
如果您需要在给定时间实际安排超过 4096 个事件 - 我相信调度程序 class 有一个可以任意大的队列。 AppClock 使用此调度程序,因此处理大量事件应该不会有问题。但是 - AppClock 的计时不如 SystemClock 准确,并且不适合细粒度的音乐事件。如果您需要高度准确的计时,您可以使用多个 TempoClocks,例如对每种乐器或每种不同类型的事件等使用不同的