TempoClock.default.sched
[MWE を準備しています] を含む関数を含むクラスを使用しています。クラスの新しいインスタンスを作成して関数を適用すると、次のエラー メッセージが表示されます。
スケジューラ キューがいっぱいです。
このメッセージは常に繰り返されます。どういう意味ですか?
TempoClock.default.sched
[MWE を準備しています] を含む関数を含むクラスを使用しています。クラスの新しいインスタンスを作成して関数を適用すると、次のエラー メッセージが表示されます。
スケジューラ キューがいっぱいです。
このメッセージは常に繰り返されます。どういう意味ですか?
すべてのクロックには、スケジュールされたイベントを格納するためのキューがあります。キューのサイズは非常に大きいですが、それでも制限があります (~4096 アイテムだと思いますか?)。「スケジューラ キューがいっぱいです」というエラーは、このキューがいっぱいになると発生します。これは、特定のクロックで 4096 を超えるイベントが合法的にスケジュールされている場合に発生する可能性があります。しかし、よくあるバグのケースは、誤ってはるか先のイベントを待ち行列に入れ、それらが永遠に待ち行列にたまり、最終的にいっぱいになってしまうことです。たとえば、.sched(...) を呼び出すと、相対的な時間の値を取りますが、絶対的な時間を渡そうとすると、これを行うのは簡単です (はるかに将来のイベントをスケジュールすることになります)。
特定の時間に実際に 4096 を超えるイベントをスケジュールする必要がある場合、Scheduler クラスには、任意に大きくできるキューがあると思います。AppClock はこのスケジューラを使用するため、多数のイベントが発生しても問題はありません。ただし、AppClock のタイミングは SystemClock ほど正確ではなく、きめ細かな音楽イベントには適していません。非常に正確なタイミングが必要な場合は、複数の TempoClock を使用できます。たとえば、楽器ごとに異なるものを使用したり、イベントの種類ごとに異なるものを使用したりできます。