Rendering in BBCut occurs a block at a time. What is a block? You can think of it as a roll where all events share a common buffer starting position. The BBCutBlock holds all messages and functions to be rendered for that roll. These will enter the scheduling queue when renderBlock is called, all being converted to Events that know how to play themselves (each is at least (play:{"do something".postln}) ).
A BBCutBlock object is created for each block passed back by the cut procedure, in the main BBCut2 class.
You will not directly need to manipulate the BBCutBlock, except:
If you write your own CutSynths, you must provide a renderBlock function that converts the block data into specific rendering messages / functions. See the existing CutSynth class files for examples.
If you write arbitrary function inputs to some cutsynths, they get passed block as one argument. This means you can look at any of the information about the current block/roll via that variable. The most useful are listed below:
In this example, note how the function is called, not at the time you hear specific cut event, but when new events are rendered and added to the scheduling queue. The scheduler needs to have a queue of events created in advance if it is accurately to sync to an external clock- render at play time does not take account of Server latency, perceptual attack time etc: