bbcuts — Generates breakbeat-style cut-ups of a stereo audio stream.


The BreakBeat Cutter automatically generates cut-ups of a source audio stream in the style of drum and bass/jungle breakbeat manipulations. There are two versions, for mono (bbcutm) or stereo (bbcuts) sources. Whilst originally based on breakbeat cutting, the opcode can be applied to any type of source audio.

The prototypical cut sequence favoured over one bar with eighth note subdivisions would be

3+ 3R + 2

where we take a 3 unit block from the source's start, repeat it, then 2 units from the 7th and 8th eighth notes of the source.

We talk of rendering phrases (a sequence of cuts before reaching a new phrase at the beginning of a bar) and units (as subdivision th notes).

The opcode comes most alive when multiple synchronised versions are used simultaneously.


a1,a2 bbcuts asource1, asource2, ibps, isubdiv, ibarlength, iphrasebars, \
      inumrepeats [, istutterspeed] [, istutterchance] [, ienvchoice]


ibps -- Tempo to cut at, in beats per second.

isubdiv -- Subdivisions unit, for a bar. So 8 is eighth notes (of a 4/4 bar).

ibarlength -- How many beats per bar. Set to 4 for default 4/4 bar behaviour.

iphrasebars -- The output cuts are generated in phrases, each phrase is up to iphrasebars long

inumrepeats -- In normal use the algorithm would allow up to one additional repeat of a given cut at a time. This parameter allows that to be changed. Value 1 is normal- up to one extra repeat. 0 would avoid repeating, and you would always get back the original source except for enveloping and stuttering.

istutterspeed -- (optional, default=1) The stutter can be an integer multiple of the subdivision speed. For instance, if subdiv is 8 (quavers) and stutterspeed is 2, then the stutter is in semiquavers (sixteenth notes= subdiv 16). The default is 1.

istutterchance -- (optional, default=0) The tail of a phrase has this chance of becoming a single repeating one unit cell stutter (0.0 to 1.0). The default is 0.

ienvchoice -- (optional, default=1) choose 1 for on (exponential envelope for cut grains) or 0 for off. Off will cause clicking, but may give good noisy results, especially for percussive sources. The default is 1, on.


asource -- The audio signal to be cut up. This version runs in real-time without knowledge of future audio.


Here is an example of the bbcuts opcode. It uses the file bbcuts.csd.

Example 97. Example of the bbcuts opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o bbcuts.wav -W ;;; for file output any platform

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

; by Menno Knevel 2022

instr 1	;Play an audio file

aleft, aright diskin2 "drumsSlp.wav", 1, 0
	      outs aleft, aright

instr 2	;Cut-up stereo audio file.

ibps = 16
isubdiv = p4
ibarlength = 2
iphrasebars = 1
inumrepeats = 8

aleft, aright diskin2 "drumsSlp.wav", 1, 0
aleft, aright bbcuts aleft, aright, ibps, isubdiv, ibarlength, iphrasebars, inumrepeats
	      outs aleft, aright


i1 0  4		; original sample
i2 5  4 1	; subdivisions = 1
i2 10 4 .5	; subdivisions = .5


See also

Sample Playback


Author: Nick Collins
August 2001

New in version 4.13