RecCutProc:
Filter:
BBCut/Classes (extension) | Libraries > BBCut > Cut procedures

RecCutProc
ExtensionExtension

Recursive breakbeat cutting

Description

This class is an initial attempt at recursive cutting. Recursion can be obtained simply by recording the output of a breakbeat cutter then cutting up that audio again. Iterate to acheive any desired level of recursion. However, we may also calculate analytically the cuts on an existing cut sequence, as this class demonstrates. The usage is in providing a set of variations on a cut sequence 'theme'.

The auxilliary class for this is RCutData which stores the source sequences of durations and offsets and the desired set of cut durations in which to recursively cut them up. RCutData processes a new variation with each call to offsetseq, returning a [duration, offset] pair sequence of blocks. There is no further subdivision of blocks. Because we are assuming offset information in this cutter, it will only have a real effect (apart from say block enveloping) on bbcutsynths that respond to the setoffset message. Note that quantisation is assumed- the offset positions and durations and in multiples of a primitive unit, calculated in beats as the current phrase length divided by the number of units in a phrase.

It is certainly possible to think of many extensions to the processing involved here, involving many functions to make choices of second order cuts, recursion to third level over very large phrase sizes, avoidance of a basic unit but simply duration in beats/offset proportion data, etc but the class stands as a proof of concept. The alert reader will surely notice that the data which has to be given to RCutData could be simplified, letting the computer do more work! But that is not important for this preliminary version.

For the much more powerful updated version see RecursiveCutProc1.

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/

Class Methods

.new

Create a RecCutProc object with the given parameters.

Arguments:

rcd

A RCutData object giving the first level cut data and the second level desired cuts.

phraselength

Next length of phrase in beats.

Instance Methods

.initRecCutProc

Called internally after a new.

.chooseblock

this uses the setoffset method of BBCutSynth to specify offset jumps relative to the current phrase size. In normal use phrasesize will be the same as the beat length of the source you wish to cut up. Note that sources which don't respond to setoffset will not be effected by RecCutProc except for any enveloping/panning etc caused by blocks.

Examples