Help with Grid + Arc SuperCollider Patch

I’m working on SuperCollider patch (is that what it’s called?) that uses the grid and arc via the MonoM library on Ubuntu vanilla. It seems to work fine with the exception of the occasional x-run pop. I’ve tried to make it as efficient as I can within the bounds of my understanding.

The issue I’m having is with SC updating a ring that rotates around the arc. Every time it needs to move it calls a function to update an array which is sent out via ringmap. The issue I’m having is that sometimes SC (probably just my computer) gets involved with processing something else and skips, and the messages to the arc accumulate and then get blasted out when it’s done skipping, and if there is enough it causes the arc to go haywire and freeze.

What is a good strategy for dealing with this? Is there a way I could limit the maximum number of messages that can be sent out in a given amount of time? Something where if a skip is occurring, no messages get accumulated, or ones that do accumulate get disposed of?

I’ll include the “patch” below here. Although I don’t think it’s necessary as I believe I’m asking a more general SC + monome question.

Each arc encoder represents a note that is increasing and decreasing in volume on a sine wave.The grid is selecting the “page” that the arc is on. Page 0 (grid key 0, 0) = speed for four notes, Page 1 (grid key 0, 1) = detune, pulse width, cutoff, resonance, Page 2 (grid key 0,2) = volume for all four notes. The volume starts at zero so to hear or see anything you need to turn the volumes on page 2 up.

Thanks for any help.

Looping Ring Refined.scd (5.4 KB)