This cut procedure allows the user to specify a set of allowable cuts and repeats. It allows a roll at the end of a phrase. It is therefore a cross between BBCutProc11 (which automates what size cuts are permissible for a given subdiv rate) and WarpCutProc1. Derive new classes from this overriding the default instance methods to create advanced extensions of this paradigm; else pass in your own functions.
For additional data on the algorithm see
Nick Collins, "Further Automatic BreakBeat Cutting Methods",
Proceedings of Generative Art 2001
reproduced at http://www.cus.cam.ac.uk/~nc272/
Create a ChooseCutProc object with the given parameters.
cutsizefunc |
A function (or something else responding to value) returning the next primitive cut size. The function will be passed the beat position within the current phrase, and the current phrase length to assist judgement. The main code will automatically reduce cut sizes/ num repeats where necessary to fit the next block into a phrase. |
repeatfunc |
an object responding to the value message with the number of desired total repetitions of the cutsize just chosen. A block is of length cutsize*repeats. The just chosen cutsize, beat position and current phrase length are passed as arguments to value. |
rollfunc |
A function returning an array of cuts that are a roll. The blocksize to subdivide is passed as the argument to value. |
phraselength |
Next length of phrase in beats. |
rollchance |
A probability of a roll near the end of a phrase. |
rollallowed |
number of beats within sight of the end of the current phrase within which a roll is permissible. (these two parameters are like stutterchance and stutterarea in BBCutProc11, but since the rollfunc works out any general cut sequence for a roll, there is no stutterspeed) |
bpsd |
beats per sub division. Sets a primitive cut size resolution for choose offset messages. |
Called internally after a new.
no need to override this central cut procedure in derived classes if you can just override the default methods cutsizedefault, repeatfuncdefault, rollfuncdefault.