Main Index
'Groucho' Index
File Formats

EXTEND:
  BAKTOBAK
  DOUBLETS
  DRUNK
  FREEZE
  ITERATE
  LOOP
  REPETITIONS
  SCRAMBLE
  SEQUENCE
  SEQUENCE2
  ZIGZAG

OTHERS:
  BOUNCE
  CERACU
  ECHO
  ENVSPEAK
  HOVER
  HOVER2
  ITERLINE
  ITERLINEF
  MADRID
  MOTOR
  PULSER
  REPEATER
  ROTOR
  SHIFTER
  SHRINK
  SORTER
  STUTTER
  TESSELATE


CDP Logo

CDP EXTEND Functions

(with Command Line Usage)

Functions to EXTEND & segment soundfiles

EXTEND BAKTOBAK
Join a time-reversed copy of the sound to a normal copy, in that order
BOUNCE
'Bounce' a sound: accelerating repeats, decaying in level
CERACU
Repeat the source sound in several cycles that synchronise after specified counts
EXTEND DOUBLETS
Divide a sound into segments that repeat, and splice them together
EXTEND DRUNK
Drunken walk through source file (chosen segments read forwards)
DVDWIND
Shorten a sound by read, skip, read, skip procedure
SFECHO ECHO
Repeat a sound with timing and level adjustments between repeats
ENVSPEAK
Process speech 'syllables'
EXTEND FREEZE
Freeze a portion of sound by iteration
HOVER
Move through a file, zig-zag reading it at a given frequency
HOVER2
Move through a file, zig-zag reading it at a given frequency, with inverted copies
EXTEND ITERATE
Repeat sound with subtle variations
ITERLINE
Iterate an input sound, following a transposition line
ITERLINEF
Iterate an input sound set, following a transposition line
EXTEND LOOP
Loop (repeat [advancing] segments) inside soundfile
MADRID
Spatially syncopate repetitions of the source soundfile(s)
MOTOR
Create faster pulse-stream within slower pulsed envelope
PULSER
Iterate a sound to create a stream of enveloped & pitched sound-packets
PULSER MULTI
Iterate a number of sounds, randomly permutated, to create a stream of enveloped and pitched sound-packets
REPEATER
Play source, with specified elements repeating
EXTEND REPETITIONS
Repeat source at given times
ROTOR
Generate note-sets that grow and shrink in pitch-range and speed
EXTEND SCRAMBLE
Scramble soundfile and write to any given length
EXTEND SEQUENCE
Produce a sequence from an input sound played at specified transpositions and times
EXTEND SEQUENCE2
Produce a sequence from several sounds played at transpositions and times specified
SHIFTER
Generate simultaneous repetition streams, shifting rhythmic pulse from one to another
SHRINK
Repeat a sound, shortening it on each repetition
SORTER
Chop sound into elements, then reorganise by loudness or duration
STUTTER
Randomly repeat segments cut from elements
TESSELATE
Create repeating patterns with shift in space and time
EXTEND ZIGZAG
Read soundfile backwards and forwards, as you specify

SEE ALSO:
MCHITER
Iterate the input sound in a fluid manner, scattering around a multi-channel space
MCHZIG
Extend by reading back and forth in the soundfile, while panning to a new channel at each 'zig' or 'zag'
PULSER SYNTH
Iterate synthesized wave-packets defined by partials data

EXTEND BAKTOBAK – Join a time-reversed copy of the sound to a normal copy, in that order

Usage

extend baktobak infile outfile join_time splice-length

Parameters

infile – input sound to process
outfile – resultant soundfile
join_time – time in infile where join-cut is to be made
splice-length – length of the splice, in milliseconds

Understanding the EXTEND BAKTOBAK Process

I call the outputs of this process (learnt from Denis Smalley), fugu sounds. There is a particular Japanese fish delicacy, the fugu fish, which has a poisonous liver, but tastes best the nearer to the liver you slice the fish (!). Fugu sounds are made using an attack-resonance source (a sound with a sharp attack which then fades away to nothing). A Reverse copy of the sound is made and then spliced onto the original so the sound now grows from nothing until it reaches a peak of loudness and spectral brightness and then fades once again to zero.

Musical Applications

If the crossfade is made just before the peak is reached, the sound is less loud and bright in the centre, and in fact a whole sequence of such musically related sounds can be made, each of different loudness/brightness in the centre. This process allows such sounds to be made in a single pass.

End of EXTEND BAKTOBAK
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


BOUNCE – 'Bounce' a sound: accelerating repeats, decaying in level

Usage

bounce bounce inf outf count startgap shorten endlevel ewarp [-smin] [-c | -e]

Parameters

infile – input soundfile
outfile – output soundfile
count – number of bounces (repetitions) (Range: 1 to 100)
startgap – time-gap between the source start and the first repeat. (Range: 0.04 to 10")
shorten – bounce gap reduction (multiplier) from one bounce to the next. For example with 0.8, each gap would be 80% of the previous one. (Range: 0.1 to 1; lower value shortens more)
endlevel – the final level, as a fraction of the source level. (Range: 0 to 1; 1 = no decay)
ewarp – decay warp: amount of decrescendo at start (Range: 0.1 to 100; >1.0 greater, < 1.0 less)
-smin – minimum length of bounced elements, shrinking in the same proportion as the acceleration. (Range: 0-1; 0 = no shrinkage)
-c – if repeating elements overlap, cut to avoid this overlap and possible clipping.
-e – shrink elements by trimming the start (Default: trim the end.)
       WARNING: do not set both -c and -e flags.

Understanding the BOUNCE Process

Bounce repeats the whole input sound count times, with the gaps between repeats shortening on each repeat, not unlike a bouncing ball. Startgap sets the initial delay time between repeats. Shorten sets the speed of the reduction (smaller is faster) and is a multiplier: for example, with Shorten = 1 the delay time is not reduced. To achieve the bouncing effect, each repetition is reduced in level: set endlevel and the sound reduces to this level over the course of count repeats. Ewarp bends the rate of decay: <1 gives a slower rate of decrescendo at the start and >1 a faster decay. If the optional min parameter is set, the repeated elements are themselves shortened in proportion to the accelerando; min sets a minimum length for the repeated elements. If no shrinkage is wanted, the parameter should be selected and set to zero. Finally, the "no overlap" flag (-c) ensures that elements will cut off at the next repetition to avoid clipping. (This can be a problem if the source is longer than startgap and the signal has multiple overlaps.)

Musical Applications

End of BOUNCE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


CERACU – Repeat the source sound in several cycles that synchronise after specified counts

Usage

ceracu ceracu insndfile outsndfile cyclcnts mincycdur chans outdur echo echshift [-o] [-l]

Example command line to create polyphonic repetition-streams:

ceracu ceracu in.wav out.wav "cyclecounts.txt" 0.5 4 10 0 0

Parameters

insndfile – input soundfile (mono)
outsndfle – output (possibly multi-channel) soundfile
cyclcnts – datafile consisting of a list of integers, being the number of repeats in each cyclestream before the streams resynchronise
mincycdur – the time before the first repeat in the fastest cyclestream. If set to ZERO, it is assumed to be the duration of the input sound.
chans – number of channels in the output – NB: it is not necessarily the same as the number of cyclestreams
outdur – duration of the output. (If set to ZERO, it outputs a single resync-cycle.) The process always outputs a whole number of complete resync-cycles, equal to or greater than the specified output duration. If the true duration is greater than one hour, the sound is curtailed, unless the -o flag is set.
echo – single-echo-delay of entire output, in seconds. (Set to ZERO for no echo.)
echshift – Spatial offset of echo-delay (an integer value) – ignored if no echo. 1 = 1 chan to right; 2 = 2 chans to right; -1 = 1 chan to left, etc. Enter '0' if not using.
-o – override the duration restriction, to produce all resync-cycles (CARE!).
-l – output channels are arranged linearly (Default: arranged in a circle.)

Understanding the CERACU Process

CERACU creates polyrhythms (such as the familiar 2-against-3 pattern). In each of several sound streams, the source sound (which must be mono) is re-triggered at a regular time-interval, which is normally different for each stream. After a certain number of repetitions, the streams re-synchronise, completing a full "resync cycle". One complete pass is a 'resync-cycle', e.g., specified as 10, 12 and 15 in the cyclecnts textfile. The source repeats 12, 12 and 15 times before the cyclestreams resynchronise. The following diagram illustrates what happens. If the source sound is 'A', the cyclestreams would be:

A     A     A    A     A     A      A     A     A     A     A (10 times)
A    A    A    A    A    A   A     A    A    A    A    A    A (12 times)
A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A (15 times)
|--------Resync cycle = mincycdur (see below)--------|

The time-span of the cycle is determined by mincycdur, the shortest division (e.g. 3, in 2 against 3: more repeats within the time make them closer together). This division may mean that the source is not played in full within the cycle. Typically, the number of streams might equal the number of output channels; if not, some channels will be silent or contain a rhythm that is the resultant of two or more streams.

The process always outputs a whole number of complete resync-cycles, equal to or greater than outdur, the overall minimum output length. The final playing of the source in each channel always runs to its end and an extra tail of silence also seems to be added. If the duration would be greater than 1 hour, the sound is curtailed, unless the "override" [-o] flag is set.

Musical Applications

CERACU provides a means to explore rhythmic overlays of the same soundfile, overlays that are not only more complex, but also precisely defined. You can get overlays with the TEXTURE via the packing parameter – expecially interesting with TEXTURE MOTIFS – but without the degree of rhythmic timing that you can get with CERACU. The possibility of spreading the outputs across a multi-channel rig is another benefit. In this regard, you might also want to look at TEXMCHAN.

End of CERACU
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND DOUBLETS – Divide a sound into segments that repeat, and splice them together

Usage

extend doublets infile outfile segdur repets [-s]

Parameters

infile – input soundfile
outfile – output soundfile, with repetitions
segdur – duration of segments
repets – number of times each segment is repeated
[-s] – option to have outfile try to stay synchronised with the infile

segdur may vary over time

Understanding the EXTEND DOUBLETS Process

EXTEND DOUBLETS is a 'slice' function, like the ones we are familiar with in the visual realm. The difference, here, in the temporal realm, is the repetition parameter. We specify the length of the segments (slices) and the number of times it repeats.

What we hear depends, as usual, on the sonic material. With voices or conventional music, the effect will be like the needle getting stuck on a vinyl record: a short passage repeats. With more complex sonic material, we would get a pulsing, mechanical effect. Especially note that the length of the segment (segdur) parameter can vary over time.

Musical Applications

Here are a few ideas to stimulate the imagination:

  • a speaker repeats a phrase for emphasis
  • a speaker repeats his phrase, adding more each time
  • a sound repeats, unfolding as it does so
  • extended time-varying extensions of a sound or syllable
  • mechanical throbbing
  • extending the material of a sound prior to using other sound transformation processes

End of EXTEND DOUBLETS
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND DRUNK – Drunken walk through source file (chosen segments read forwards)

Splice segments of source file end-to-end; the start times of the segments in the source file are chosen by a 'drunken-walk' through the source file. In Mode 2 the source file plays soberly at holds.

Usage

extend drunk 1 infile outfile outdur locus ambitus step clock [-ssplicelen] [-cclokrand] [-ooverlap] [-rseed]
extend drunk 2 infile outfile outdur locus ambitus step clock mindrnk maxdrnk [-ssplicelen] [-cclokrand] [-ooverlap] [-rseed] [rseed] [-llosober] [-hhisober]

Modes

1  Drunken walk
2  Play soberly at holds, with lower and upper limits of sobriety

Parameters

infile – input soundfile to process
outfile – output soundfile
outdur – total minimum duration of output soundfile (seconds)
locus – time in infile at which the drunken walk occurs (seconds) – this location can move through the source
In breakpoint files, the LEFT HAND column refers to time locations in outfile of outdur duration, and the RIGHT HAND column refers to time locations in infile.
This is also true for the ambitus, step and clock parameters, except that the right hand column in these cases contains timing data, not times.
When used as a constant (single value), the locus time refers to a time location in the infile.
ambitus – half-width of the region from within which the sound segments are read (seconds)
step – maximum length of (random) step between segment reads (> 0.002 seconds); this always falls within the ambitus: it is automatically adjusted where too large
clock – time between segment reads: this is the segment duration (> splicelen * 2) (seconds)
mindrnk – minimum number of clock ticks between sober plays (1 - 32767 Default: 10)
maxdrnk – maximum number of clock ticks between sober plays (1 - 32767 Default: 30)
-ssplicelen – length in milliseconds of the splice slope (Default: 15ms)
-cclokrand – randomisation of clock ticks (Range: 0 to 1 Default: 0)
-ooverlap – mutual overlap of segments in output (Range: 0 to 0.9900 Default: 0)
-rseed – any set value gives reproducible output
-llosober – minimum duration of sober plays (seconds) (Range: > 0 to duration of infile+. If >= duration of infile, all sober plays go to the end of the source.
-hhisober – maximum duration of sober plays (seconds)
(Range: > 0 to duration of infile+.
All params except outdur, splicelen and seed may very in time.

Understanding the EXTEND DRUNK Process

Another approach to segmentation, EXTEND DRUNK takes a series of segments selected from the infile and splices them together to form the outfile. The process starts at some time in the file, called the locus and selects a segment, randomly, from within an 'ambit'. The length of 'ambit' is 2 * ambitus, and stretches to both sides of the locus position. Once a segment is read, the program moves (randomly) to a new position in either direction, within the ambit, and not more than step from the start location of the previous segment, from where it starts the next read. This is called a 'random walk'; hence the name 'drunk'.

The function is based on a drunken walk algorithm implemented by Miller Puckette.

[relationship of DRUNK parameters]

While it is doing this walk, one can shift the locus, e.g., progressing slowly through the file. (NB: note above about times in the breakpoint file.) The 'ambit' – the portion of the soundfile being used at any one time, can be varied by altering the size of the ambitus, which is one-half the full 'ambit' width. The step, which is the maximum distance between the start of one read and the start of the next read (but must lie within the ambit), can also be varied.

For example, if the ambitus is small, segments very close to one another will be selected. Or if the step is much smaller than the segment size (a slow clock produces longer segments), selected segments will tend to overlap, producing random echoes or pre-echoes. The length of the segment, determined by the clock parameter is NOT constrained to the size of the ambit, so segments may begin within the ambit and end outside it. Segments which would end beyond the specified outdur are truncated.

To summarise, then, locus, ambitus and step all refer to start locations. Clock refers to segment length.

The process continues until outdur is filled, which makes it a useful program with which to generate material.

Musical Applications

This is all about the fragmentation and texturing of sound. You can use this function to fragment a specific portion of a soundfile. Or you could make large jumps (step) in order to create surprise areas of fragmentation. Or EXTEND DRUNK can be used to churn up source material to varying degrees. The parameters allow a great deal of scope for variation, so some methodical study will be well rewarded. The following are some pointers regarding key parameters.

Musically, the issue is how much will the original soundfile be broken up. The various parameters contribute to this, each in their own way: the size of ambitus, the size of step, the length of the segment (clock and clokrand), and the position where this takes place (the locus). Introducing breakpoint files for time-varying effects adds another dimension again. Hence, for example, the locus might move gradually through the file, or moves back and forth in the file.

Clokrand randomises clock. If not used the output will consist of fixed lengths, a continuous stream of regular bursts of sound. Clokrand makes the segment lengths vary – in a time-varying way if a time clokrand breakpoint file is used.

Note that clock determines the length of the segments because the read continues until the next 'tick'. Overlap will increase the rate at which the segments come past: i.e., proportionately (0 to 0.9900) less than the length of each segment.

The splicelen (which can be quite long) can be used to soften the joins, thereby smoothing the output.

The seed parameter makes it possible to create a reproducible sequence. The 'random' sequence of numbers takes a fixed and hence repeatable form.

Finally, Mode 2 offers a hold mechanism whereby the unaltered infile continues to be read from where the read marker happens to be at the time. This can vary within limits, as set by mindrnk, maxdrnk, losober and hisober.

6 examples, 2-6 with breakpoint combinations

The infile used here is balsam.wav (1.997120 sec, mono, SR=44100), a vocal sound supplied with CDP's GrainMill.

To run these examples in Sound Loom, you should copy this sound (or a similar sound of the same length) into the Workspace directory (on the Workspace Page). You should also copy the files:

locus3.brk, locus4.brk
ambitus1.brk, ambitus2.brk, ambitus3.brk, ambitus4.brk
step1.brk, step2.brk, step3.brk, step4.brk, step5.brk and
clock1.brk, clock2.brk, clock3.brk, clock4.brk, clock5.brk
onto the Workspace. You will find these files in the Support Pack drunkexamples.zip – NB: the command line .bat files are not needed for Sound Loom, which uses Patches. Then put balsam.wav on the Chosen Files list, press Process and select the EXTEND drunkwalk process.

For Soundshaper, make sure that that the sound is in your sounds directory, and that all the other files listed above are in your TXT directory. Then load the Presets (same names as the Patches) and run Soundfiles / Extend / Drunk. (Check the path to the .brk files to ensure that the Presets match your setup.)

For Command Line operation, put all files in the current directory and run the batch (.bat) files.

EXAMPLE 1 – fairly large segments are from widely spaced locations in the infile. Fixed values are used. Sound Loom/SoundShaper: Load the Patch/Preset drunk1.

               INFILE OUTFILE  LENGTH LOCUS AMBITUS STEP CLOCK
extend drunk 1 balsam getdrnk1 25     1     .6      .2   .5

EXAMPLE 2 – move gradually through the infile, with segment size (clock) decreasing, while the scattering (step) increases. Sound Loom/SoundShaper: Load the Patch/Preset drunk2.
LOCUS: left column is time in outfile, right column is time in infile

locus3.brk  ambitus1.brk  step1.brk  clock1.brk
 0  .3       0  .1          0  .05    0  .3
10  .6      10  .2         10  .1    10  .2
15 1.2      15  .3         15  .15   15  .1
20 1.8      20  .2         20  .2    20  .05

extend drunk 1 balsam getdrnk2 25 locus3.brk ambitus1.brk step1.brk clock1.brk

EXAMPLE 3 – short segments (fast clock) are well-scattered within the full width (2 * ambitus) around each locus. Sound Loom/SoundShaper: Load the Patch/Preset drunk3.

locus3.brk  ambitus2.brk  step2.brk  clock2.brk
 0 .3        0  .2         0  .1       0  .05
10 .6       10  .2        10  .2      10  .1
15 1.2      15  .2        15  .3      15  .15
20 1.8      20  .2        20  .4      20  .1

extend drunk 1 balsam getdrnk3 25 locus3.brk ambitus2.brk step2.brk clock2.brk

EXAMPLE 4 – longish segments (slow clock) which are located very close to each other (tiny steps) around each locus. Sound Loom/ SoundShaper: Load the Patch/Preset drunk4.

locus3.brk  ambitus2.brk  step3.brk  clock3.brk
 0  .3       0  .3         0  .05     0  .2
10  .6      10  .2        10  .08    10  .3
15 1.2      15  .3        15  .1     15  .2
20 1.8      20  .2        20  .06    20  .3

extend drunk 1 balsam getdrnk4 25 locus3.brk ambitus2.brk step3.brk clock3.brk

EXAMPLE 5 – expansion outward from the centre: central locus, and the other parameters move from small to large. Sound Loom/SoundShaper: Load the Patch/Preset drunk5.

locus4.brk  ambitus3.brk  step4.brk  clock4.brk
 0  0.8      0  .1         0  .035    0  .05
 8  1.2     10  .2        10  .09    10  .15
16  0.8     15  .3        15  .15    15  .2
20  1.2     20  .4        20  .20    20  .3

extend drunk 1 balsam getdrnk5 25 locus4.brk ambitus3.brk step4.brk clock4.brk

EXAMPLE 6 – contraction inwards towards the centre: central locus, and the other parameters move from large to small. Sound Loom/SoundShaper: Load the Patch/Preset drunk6.

locus4.brk  ambitus4.brk  step5.brk clock5.brk
 0  0.8      0  .4         0  .2     0  .3
 8  1.2     10  .3        10  .15   10  .2
16  0.8     15  .2        15  .09   15  .15
20  1.2     20  .1        20  .035  20  .05

extend drunk 1 balsam getdrnk6 25 locus4.brk ambitus4.brk step5.brk clock5.brk

My thanks to Eitan Teomi whose queries helped me to understand DRUNK better and improve the documentation, and to Trevor Wishart for converting the command lines to Sound Loom Patches. [AE]

ALSO SEE:
DRUNK in the spectral set, which moves about in a similar way through analysis windows.
DRUNK TUTORIAL

End of EXTEND DRUNK
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


DVDWIND – Shorten a sound by read, skip, read, skip procedure

Usage

dvdwind dvdwind infile outfile contraction clipsize

Parameters

infile – input soundfile
outfile – output soundfile
contraction – time-contraction of the input (> 1; Range: >1 to 3600)
clipsize – duration of each retained clip; should be less than the original file-length. (Range: 10 to 2000 mS)

Understanding the DVDWIND Process

DVDWIND shortens the sound by skipping portions, simulating the way information is skipped in a CD/DVD when fast-forwarded.

Musical Applications

...

End of DVDWIND
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


SFECHO ECHO – Repeat a sound with timing and level adjustments between repeats

Use MODIFY REVECHO if overlapping delays are required.

Usage

sfecho echo insndfile outsndfile delay attenuation totaldur [-rrand] [-ccutoff]

Example command line to create ... :

sfecho echo in.wav out.wav 6 0.6 12

Parameters

insndfile – input soundfile
outsndfile – output soundfile
delay – time in seconds between echo repeats (Range: greater than the length of insndfile to 3600 sec. [one hour]; thus delay cannot be less than the input duration)
attenuation – relative (diminishing) level of each repeat (Range: 0 to 1)
totaldur – maximum output duration (actual duration may be less); it must be a minimum of 2 x delay.
-rrand – randomisation of echo times (Range: 0 to 1)
-ccutoff – dB level at which decaying echoes cut off (Range: 0 to -96dB, Default: -96dB, i.e., silence)
Delay, attenuation and rand may vary over time.

Understanding the SFECHO ECHO Process

CDP's EXTEND LOOP enables you to step through a soundfile while adding each step-segment to an output soundfile. It does not allow you to specify an endtime beyond the end of the input sound (it cuts off). EXTEND REPETITIONS enables you to repeat a whole soundfile, whether overlapping or with a gap between repetitions: i.e., the time of repetition is beyond the end of the input sound. This new ECHO function complements these two features by placing the repeats after the end of the input soundfile.

Musical Applications

...

End of SFECHO ECHO
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


ENVSPEAK – Process speech 'syllables'

Usage

envspeak envspeak 1,5,6 infile outfile wsize splice offset repet rand
envspeak envspeak 2 infile outfile wsize splice offset
envspeak envspeak 3-4 infile outfile wsize splice offset attencnt dbatten
envspeak envspeak 7 infile outfile wsize splice offset div rand which [-z]
envspeak envspeak 8-9 infile outfile wsize splice offset repet rand ratio
envspeak envspeak 10 infile outfile wsize splice
envspeak envspeak 11 infile outfile wsize splice seed
envspeak envspeak 12 infile outfile wsize splice Nwise
envspeak envspeak 13-24 AS ABOVE BUT replace wsize by cutsfile
envspeak envspeak 25 infile outfile timesfile

Modes

1, 13  Repeat each 'syllable' repet times.
2, 14  Reverse-repeat: each syllable played forwards then backwards
3, 15  Attenuate N in N+1 syllables 4, 16  Attenuate all in every attenct+1 segments, except attencnt
5, 17  Repeat each syllable N times, shrinking from end 6,18  Repeat each syllable N times, shrinking from start
7,19  Divide each syllable into N parts and repeat one of these N times
8,20  Repeat each syllable, shortening each repetition, lopping-off end
9,21  Repeat each syllable, shortening each repetition, lopping-off start
10,22  Extract all syllables
11,23  Randomly reorder syllables
12,24  Reverse-order syllabless N-wise (e.g., for N=3 abc|def|ghi becomes cba|fed|ihj)
25  Remove silent gaps at indicated times

Parameters

infile – input soundfile
outfile – output soundfile
wsize (Modes 1-12) – size of envelope-search window (Range: 5-1000 mS; default: 50mS)
or
cutsfile(Modes 13-24) – list of times (apart from 0 & end) where the infile is cut to create syllables
splice – splice length (Range: 2-100 mS; default 15mS)
offset – number of initial peaks to output unchanged (Range: 0 to 100)
repet – number of repetitions of each syllable (Range: 2 to 100)
attencnt – groupsize (N) of syllabless to attenuate (Mode 3) or NOT to attenuate (Mode 4)(Range: 1 to 100)
    N means N in N+1 : so '1' means 1 in 2, '3' means 3 in 4 etc.
dbatten (Modes 3-4) – reduce attenuated segments by atten dB: (Range: -96dB to < 0dB)
div (Mode 7) – keep 1/divth part of syllable, to repeat div times (Range: 1 to 100)
which (Mode 7) – which syllable-fraction to keep (Range: 1 to div)
rand – randomisation of lengths of repeated units (Range: 0 to 1)
-z (Mode 7) – repeated elements do NOT grow in size (machine-like quality)
ratio (Modes 8,9) – length of repeated elements reduces by ratio. (Range: > 0.0 to 1)
nwise (Mode 12) – reverse order in groups of N syllables (Range: 1 to 100)
seed(Mode 11) – intialisation for random order permutation;
    if seed > 0, using the same seed again gives IDENTICAL random output
repet, attencnt, atten and which may vary over time
timesfile (Mode 25 only) – times used to remove silent gaps in source sound.

Understanding the ENVSPEAK Process

ENVSPEAK manipulates segments cut from the source. The aim is clearly to process vocal syllables, but any segments may be used. These are found by envelope (Modes 1-12) or by cut times (Modes 13-24). The modes cover a diverse range of options to manipulate segments: from simple repetition of segments to reversal, attenuation, shrinking and random selection. Note that Mode 10 extracts segments to separate files, numbered (+001, 002... wav). This option may be more useful if the Cut-Times version is used.

If Cut-Times are used (Modes 13-24), care should be taken not to make the gaps too short in the times-file. (The program tends to generate an error-message to the effect that SPLICE is too long, but even reducing this to the minimum doesn't cure the issue, which is currently unresolved.)

Mode 25 is a later addition, in which silent gaps can be removed, assuming one can identify their start and end times. (It's not clear yet whether this is a single list of times, or pairs of start-end times.)

Musical Applications

...

End of ENVSPEAK
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND FREEZE – Freeze a segment of a sound by iteration in a fluid manner

NB: The CDP elease 8 set contains a program FREEZE which appears to be identical to this function.

Usage

extend freeze 1 infile outfile outduration delay rand pshift ampcut starttime_of_freeze endtime gain [-sseed]
OR
extend freeze 2 infile outfile repetitions delay rand pshift ampcut starttime_of_freeze endtime gain [-sseed]

Modes

1  Specify output duration
2  Specify number of repetitions

Parameters

infile – input soundfile
outfile – output soundfile
outduration – Desired duration of resultant soundfile.
repetitions – Number of repetitions of frozen segment.
delay – The (average) delay between iterations: <= length of frozen segment.
rand – Delaytime randomisation. Range: 0 to 1. Default: 0.
pshift – Maximum of random pitchshift of each iteration. Range: 0 to 12 semitones. E.g., 2.5 = 2.5 semitones up or down.
ampcut – Maximum of random amplitude reduction on each iteration. Range: 0 to 1. Default: 0.
starttime_of_freeze – Time where the frozen segment begins in the original sound.
endtime – Time where the frozen segment ends in the original sound.
-sseed – The same seed number will produce identical output on rerun. Default: 0 – random sequence is different every time.

Understanding the EXTEND FREEZE Process

Extend a specific part of a sound using the iteration procedure. This tends to give a more convincing time-stretching result than any of the other time-stretch procedures, particularly as the non-time-stretched portions of the sound are not subject to any processing. The internal proportions of a sound event can be manipulated using this process.

Musical Applications

The start and end times of the freeze enable you to focus on very specific parts of the sound, such as the 'a' in 'star' or the 's' in 'star'. With this program you can extend these to form sounds such as 'staaaaaaaaaaaaaaaaaaaar' or 'ssssssssssssssssssstar'. Given the claim that it gives 'a more convincing time-stretching result than any of the other time-stretch procedures', it is a program well worth exploring thoroughly.

End of EXTEND FREEZE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


HOVER – Move through a file, zig-zag reading it at a given frequency

Usage

hover hover infile outfile frq loc frqrand locrand splice dur

Parameters

infile – input soundfile (mono)
outfile – resultant soundfile
frq – rate of reading source-samples (in Hz).
Frq determines the width (in samples) of the zigzag-read; for example, at a sample-rate of 44100:
•  frq = 1 Hz: reads 22050 samples forward and 22050 samples back.
•  frq = 10 Hz: reads 2205 sampless forward and 2205 samples back.
loc – time in infile from which samples are read.
frqrand – degree of random variation of frequency (range 0-1).
locrand – degree of random variation of location (range 0-1).
splice – length of the splice (range: 0-100 milliseconds).
splice length must be less than 1 over twice the maximum frq used, e.g. <5 ms for 100 Hz.
dur – total output duration.
frq and loc, frqrand and locrand may vary through time.
Time in any breakpoint files is time in the output file.

Understanding the HOVER Process

HOVER is a variant of ZIGZAG, but instead of jumping about in the file, it hovers around a given time-point (loc), reading forwards and backwards from this point at a given speed, which also determines the width of the reading. Note that the location point is time-variable, so the pointer can move through the file over time or indeed move to any time-point you wish. You can also randomly vary the frequency and the location point.

Musical Applications

HOVER gives considerable scope for prolonging a sound, by reading the file in a controlled zig-zag fashion. It might be used for extending short-lived percussive sounds of an inharmonic timbre; producing a series of ebb-and-flow shapes (each like BAKTOBAK); or prolonging a highly textured sound which is difficult to loop. A number of different HOVERings of the same sound mixed together should also produce an interesting texture out of the one source.

SEE ALSO: HOVER2, ZIGZAG, MCHZIG

End of HOVER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


HOVER2 – Move through a file, zig-zag reading it at a given frequency, with inverted copies

Usage

hover2 hover2 infile outfile frq loc frqrand locrand dur [-s] [-n]

Parameters

infile – input soundfile (mono)
outfile – resultant soundfile
frq – rate of reading source-samples (in Hz).
Frq determines the width (in samples) of the zigzag-read; for example, at a sample-rate of 44100:
•  frq = 1 Hz: reads 22050 samples forward and 22050 samples back.
•  frq = 10 Hz: reads 2205 sampless forward and 2205 samples back.
loc – time in infile from which samples are read.
frqrand – degree of random variation of frequency (range 0-1).
locrand – degree of random variation of location (range 0-1).
dur – total output duration.
[-s] – step between locations at times specified in any breakpoint file
       (rather than interpolating between the locations as time progresses).
[-n] – normalise the loudness of all wavecycles generated.
frq and loc, frqrand and locrand may vary through time.
Time in any breakpoint files is time in the output file.

Understanding the HOVER2 Process

HOVER2 is a variant of HOVER (and ZIGZAG). It moves through the file, zigzag reading it at a given frequency, reading back and forth from a zero-crossing, then outputting same data inverted, to form symmetrical zero-centred waveforms at each read. In effect, this means that each segment is followed by a reversed copy of itself.

Most parameters are shared with HOVER, expecially the given time-point (loc) and reading forwards and backwards from this point at a given speed (frq). As the location point is time-variable, the pointer can move through the file over time or indeed move to any time-point you wish. You can also randomly vary the frequency and the location point.

There are two additional flags: [-s] takes the times in any breakpoint file (such as that for loc) as the times to step between locations. Additionally, you can normalise the loudness of all wavecycles ([-n]).

Musical Applications

...

SEE ALSO: HOVER, ZIGZAG, MCHZIG

End of HOVER2
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND ITERATE – Repeat sound with subtle variations

Usage

extend iterate 1 infile outfile outduration [-ddelay] [-rrand] [-pshift] [-aampcut] [-ffade] [-ggain] [-sseed]
OR:
extend iterate 2 infile outfile repetitions [-ddelay] [-rrand] [-pshift] [-aampcut] [-ffade] [-ggain] [-sseed]

Modes

1  Iterate to a specified duration
2  Iterate a specified number of times

Parameters

infile – input soundfile
outfile – output soundfile
outduration – length in seconds of outfile
repetitions – number of repetitions in the iteration
-ddelay – (average) delay between iterations in seconds (Default: length of infile)
-rrand – delay-time randomisation (Range: 0 to 1, Default: 0)
-ppshift – maximum random pitchshift of each iteration in semitones (Range: 0 to 12 semitones; e.g., 2.5 = 2.5 semitones up or down)
-aampcut – maximum random amplitude reduction on each iteration (Range: 0 to 1, Default 0)
-ffade – (average) amplitude fade between iterations (Range: 0 to 1, Default 0)
-ggain – overall gain (Range: 0 to 1, Default: 0, which gives the best guess for no distortion)
-sseed – the same seed number will produce identical output on rerun (Default: 0 – the random sequence is different every time)

Understanding the EXTEND ITERATE Process

EXTEND ITERATE was written as a way of achieving more natural sounding iterations of a soundfile by introducing a randomisation of the delay time between each iterated segment, and slight variations in pitch or amplitude between the segments, as would occur in a naturally iterating source (e.g., a rolled 'rr' vocal sound). These randomisations can be selected (e.g., one might omit pitch variation, or not apply randomisation to the delay times), or applied in an exaggerated fashion, to achieve a number of different musical results.

The rand parameter introduces slight variations in delay between iterations, which may increase the 'naturalness' of the result. Omitting the rand parameter will produce a more mechanical echo effect.

The gain parameter allows some control over the amplitude of the mixed portions; the amount of gain suitable is dependent on the amplitude of the signal at the beginning and end of the soundfile (where the repeated units overlap). This can be examined with a soundfile viewer (such as VIEWSF, which can display the amplitude of each individual sample), and the gain adjusted accordingly if the defaults don't seem to be handling it properly. When randomisation is used, the gain is further reduced in the expectation that there will be a greater degree of overlap.

Musical Applications

This function produces a series of (usually overlapping) repeats of a soundfile. The nature of the attack portion of the soundfile – sharp or gradual – will greatly affect the way these repetitions are perceived. The use of a very short soundfile, e.g., 0.2 seconds, especially one with a sharp attack, will result in a rapid-fire succession of easily perceived iterations.

VARIANTS:

  • MCHITER: similar, but with multi-channel output
  • ITERLINE: iterate, following a transposition line

End of EXTEND ITERATE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


ITERLINE – Iterate an input sound, following a transposition line

Usage

iterline iterline mode insndfile outsndfile tdata outduration [-ddelay] [-rrand] [-ppshift] [-aampcut] [-ggain] [-sseed] [-n]

Example command line to create transposed repetitions of a soundfile :

iterline iterline 1 "tdata.txt" 10 1 0 0 0 0 0

Modes

1  Interpolate between transpositions (glissandi)
2  Step between transpositions (discrete pitch changes)
Parameters
insndfile – input soundfile
outsndfile – output soundfile
tdata – text file of time transposition pairs, with the transpositions given in (possibly factional) semitones
outduration – duration of the output soundfile
-ddelay – the (average) delay betwen iterations
-rrand – randomisation of the delay time. Range: 0 to 1. Default: 0 (no randomisation)
-ppshift – the maximum value for the random pitch shift of each iteration. Range: 0 to 12 semitones. For example, a value of 2.5 means 2.5 semitones up or down.
-aampcut – the maximum value for a random amplitude reduction on each iteration. Range: 0 to 1. Default 0 (no randomisation)
-ggain – overall gain. Range: 0 to 1. Note that 0 is a special value that produces the maximum acceptable level. This will be overridden by the -n normalisation flag – see below.
-sseed – the same seed-number will produce identical output on each rerun. Default: 0 (random sequence is different every time)
-n – normalise the output: the maximum output level is the same as the maximum input level. This normalised output will be greater than the input level only if gain is NON-zero.

Understanding the ITERLINE Process

EXTEND ITERATE repeats a sound over and over until outduration is reached, possibly with an amplitude reduction with each iteration. ITERLINE adds to this the facility to have these iterations follow a time-varying linear contour, either with glissandi or with discrete steps between the iterations.

Musical Applications

...

End of ITERLINE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


ITERLINEF – Iterate an input sound set, following a transposition line

Usage

iterlinef iterlinef mode insndfile outsndfile tdata outduration [-ddelay] [-rrand] [-ppshift] [-aampcut] [-ggain] [-sseed] [-n]

Example command line to create transposed repetitions of a soundfile :

iterlinef iterlinef 1 "tdata.txt" 10

Modes

1  Interpolate between transpositions (glissandi)
2  Step between transpositions (discrete pitch changes)
Parameters
insndfile – input soundfile
outsndfile – output soundfile
tdata – text file of time transposition pairs, with the transpositions given in (possibly factional) semitones
outduration – duration of the output soundfile
-ddelay – the (average) delay betwen iterations
-rrand – randomisation of the delay time. Range: 0 to 1. Default: 0 (no randomisation)
-ppshift – the maximum value for the random pitch shift of each iteration. Range: 0 to 12 semitones. For example, a value of 2.5 means 2.5 semitones up or down.
-aampcut – the maximum value for a random amplitude reduction on each iteration. Range: 0 to 1. Default 0 (no randomisation)
-ggain – overall gain. Range: 0 to 1. Note that 0 is a special value that produces the maximum acceptable level. This will be overridden by the -n normalisation flag – see below.
-sseed – the same seed-number will produce identical output on each rerun. Default: 0 (random sequence is different every time)
-n – normalise the output: the maximum output level is the same as the maximum input level. This normalised output will be greater than the input level only if gain is NON-zero.

Understanding the ITERLINEF Process

Here we need to understand what an 'input sound set' is. It must consist of 25 transpositions of a source at intervals of one semitone, in ascending order. The input sounds must be of approximately equal duration.

Musical Applications

...

End of ITERLINEF
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND LOOP – Loop (repeat [advancing] segments) inside soundfile

Usage

extend loop 1 infile outfile start len step [-wsplen] [-sscat] [-b]
extend loop 2 infile outfile dur start len [-lstep] [-wsplen] [-sscat] [-b]
extend loop 3 infile outfile cnt start len [-lstep] [-wsplen] [-sscat] [-b]

Modes

1  Segment advances in soundfile until soundfile is exhausted
2  Specify outfile duration (shortened if looping reaches end of infile)
3  Specify number of loop repeats (reduced if looping reaches end of infile)

Parameters

infile – soundfile to process
outfile – output soundfile
dur – duration of outfile required (in seconds)
cnt – number of loop repeats required
start – time (in seconds) in infile at which the looping process begins
len – length of looped segment (in milliseconds)
[-l]step – advance in infile from the start of one loop to the next (in milliseconds)
May be zero in Modes 2 and 3 but not in Mode 1. When zero, repeating loops of the same material are created.
-wsplen – length of splice (in milliseconds) (Default: 25ms)
-sscat – make step advance irregularly, within the timeframe given by scat
-b – play from beginning of infile (even if looping doesn't begin there)

Understanding the EXTEND LOOP Process

The key feature of this process is that it joins together, end-to-end, a series of segments taken from the file, each with a splice slope to avoid clicks. These segments are all of the same length, so one way or another, the result may appear to have some degree of regular pulsation. This does not (usually) result from the presence of splices, but rather is a perceptual result caused by the repetition of sonic material.

The most salient parameters are step and len. Step is the timestep in the sourcefile between the start of one selected segment and the next.

  • If the step is zero, the selected segment will simply be repeated.
  • If the step is > 0 but smaller than the segment length, the selected segments will share much in common, but each will begin at a point in the sourcefile a little later than the last, producing a progressing echo effect. The outfile will be longer than the infile.

    [Diagram 1 shows how
	the segments are taken from overlapping locations in
	the source, due to the short steps]Diagram 1

  • If the step is larger than the segment length, the process will leap through the file, omitting bits of it, and rapidly get to the end. The result will be shorter than the infile.

    [Diagram 2 shows how the
	segments are taken from the source after a gap, due to the
	long steps]Diagram 2

The scat parameter randomises the length of step (within a small range), producing a less mechanical result.

The length of the segments (len) – as well as the size of the step – affects the recognisability factor of the original source material.

The following notes on the subject of 'recognisability' are a paraphrase, and any inaccuracies in the reporting are due to me (Ed.).

In his talk at the Sonic Arts Network Conference in Huddersfield on 14 March 1999, featured composer Yves Daoust said that he always sought to respect and usually be able to recognise the source when concrète materials are used. His point was that if recognisability is removed completely, the sound no longer has a meaning: i.e., you could have produced that result in the studio using any type of source material. So the issue of why you are using certain types of source material is integral to the whole conception of the piece – and, he emphasised, it is very important to come to the studio with a strong conception; otherwise you could be overly influenced by the ramifications of the source material and not, as a result, achieve a clear and focused musical form.

He found he was working towards 'a more abstract way' to deal with the musical structures. He described the beginnings of several such ideas:

  • fragmentation of material (which is not the same as 'granulation')
  • a 'scale' between 'unbroken sound' (no fragmentation) and 'granulation' (complete dispersal of sonic material)
  • the filtering of information (rather than just filtering in a sonic sense)
  • morphological filters
  • sieves: small apertures in the e.g. frequency spectrum plus 'enough energy to get out'
  • a common rule applied to disparate material
  • trajectories: large scale shaping, such as long filter sweeps, slowly changing density, long glissandi (realised in different ways)

Musical Applications

EXTEND LOOP can be used for pulsating a sound in a regular way. The incremental movement through the source can be illustrated by moving through the word 'anchovies' with a step that moves ahead one letter at a time and a segment length which encompases 4 letters:

anch-ncho-chov-hovi-ovie-vies

Because of the limited nature of these facilities, EXTEND LOOP can be used to play with sounds in a controlled way. Some of the effects resulting from very small steps and segment lengths will be surprising and approach brassage techniques.

For (much) more flexibility in brassage and granulation, see MODIFY BRASSAGE and its graphic counterpart GrainMill (on PC sytems). Other functions which carry out fragmentation in some way include EXTEND DRUNK, EXTEND SCRAMBLE and EXTEND ZIGZAG.

In the spectral domain, also see BLUR DRUNK, BLUR SHUFFLE, and BLUR WEAVE. COMBINE INTERLEAVE fragments by interpolating N analysis windows from two different files, functions such as FOCUS FREEZE and FOCUS STEP fragment by holding material according to a time frame pattern. MORPH BRIDGE and MORPH GLIDE break up a file by working with specified analysis windows, and SPEC GRAB and SPEC MAGNIFY can isolate and extend a single analysis window. Finally, the whole DISTORT package fragments material by creating pseudo-wavecycles from sonic material found between zero crossings.

End of EXTEND LOOP
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


MADRID – Spatially syncopate repetitions of the source soundfile(s)

Usage

madrid madrid 1 insndfile1 [insndfile2 ...] outsndfile dur ochans strmcnt delfact step rand [-sseed] [-l] [-e] [-r | -R]
madrid madrid 2 insndfile1 insndfile2 [insndfile3 ...] seqfile outsndfile dur ochans strmcnt delfact step rand [-sseed] [-l] [-e]

Example command line to create spatially separated repetitions:

madrid madrid 1 in1.wav in2.wav in3.wav out.wav 10 4 8 1 1.0 0

Modes

1  Random output file order
2  Use segfile to determine the order of output files

Parameters

insndfile – input soundfile or soundfiles (mono)
outsndfile – output (multi-channel) soundfile
segfile – textfile containing a list of numbers in the range 1 to count-of-infiles which determines the sequence in which the infiles are used in the output
dur – duration of the output sound
ochans – number of channels in the output sound (Range 2 to 16)
strmcnt – number of spatially distinct streams (2 to 64)
delfact – proportion of items to (randomly) delete. Values between 0 and 1 delete that proportion of events in the various streams. For values greater than 1, the proportion of events at a single location increases. (Range: 0 to 1000)
step – time between event repetitions (Range: 0 to 60 sec.)
rand – randomisation of step size (Range: 0 to 1)
-sseed – value to initialise the randomisation of the delfact deletions. With a non-zero value, rerunning the process with the same parameters will produce the same output. Otherwise, the deletions are always different.
-l – for ochans > 2, the loudspeaker array is assumed to be circular. The -l flag forces the array to be linear, with defined left and right ends.
-e – allow empty events: i.e., sound is absent at some of the repeat-steps.
-r – randomly permutate the order of input sounds used in the output. (ALL input sounds are used ONCE before the next order permutation is generated.)
-R – randomly select the next input sound: the selection is unrelated to the previous selection.
-r and -R cannot be used in combination. When only one input sound is used, neither flag has any effect.

delfact, step and rand can vary over time.

Understanding the MADRID Process

MADRID achieves its syncopated repetitions by randomly deleting items from the spatially-separated repetition streams. The program sets up several sound streams. In each sound stream the same source sounds are repeated at the same time-interval. By randomly deleting repetitions from the various streams, the output appears to be spatially syncopated, as stress is transferred from one stream to another, or to some combination of streams, changing the apparent spatial location of the source.

Musical Applications

...

End of MADRID
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


MOTOR – Create faster pulse-stream within slower pulsed envelope (SINGLE or MULTI-SOURCE)

Usage

motor motor 1,4,7 infile outfile params
motor motor 2,5,8 infile outfile data params
motor motor 3,6,9 infile1 [infile2, infile3,...] outfile params

params –
dur freq pulse fratio pratio sym [-ffrand] [-pprand] [-jjitter] [-ttremor] [-yshift] [-eedge] [-bbite] [-vvary | -a] [-sseed] [-c]

Modes

1, 3  Typical source(s) are short, & widening in frequency-range from start to end
2   Cut segments from single source at slice-times specified in "data"
4-6  As Mode 2, except source – reads only advance
7-9  As Mode 2, except source – reads either only advance or only regress

Parameters

infile – input soundfile(s).
outfile – output soundfile.
data (Modes 2,5,8) – textfile of times in infile at which to slice it into separate sources.
dur – duration of the output file (secs).
freq – pulse-rate of inner-pulses. (Range: 2 to 100 Hz)
pulse – pulse-rate of outer-pulses. (Range: 0.1 to 10 Hz)
fratio – proportion of on-time to off-time of inner-events. (Range: 0 to 1)
pratio – proportion of on-time to off-time of outer-events. (Range: 0 to 1)
sym – symmetry of outer-pulses. (Range: 0 to 1)
         Sym marks the peak of a rising-falling envelope within the range 0 to 1:
             0.5 gives a symmetrical cresc-decresc envelope.
             1 gives cresc envelope; 0 gives decresc envelope.
             0.75 gives long cresc and short decresc. etc.
-ffrand – frequency (f) randomisation. (Range: 0-1) Maximum variation is from f/2 to 3f/2.
-pprand – pulse (p) randomisation. (Range: 0-1) Maximum variation is from p/2 to 3p/2.
-jjitter – range of any pitch randomisation of inner-pulses. (Range: 0 - 3 semitones) -ttremor – range of any random amplitude attenuation of inner-pulses. (Range: 0-1) -yshift – range of any randomisation of outer-pulse symmetry. (Range: 0 to 1) -eedge – length of decay-tail of inner-pulses: multiple of dur. (Range: 0 to 20) -bbite – shape of outer-pulses. (Range: 0.1 to 10, default = 3)
             1 = linear rise-fall; > 1 slow-fast rise, fast-slow fall; < 1 fast-slow rise, slow-fast fall.
-vvary – advance-step in source-read; randomly-varies from one outer-pulse to the next.(Range: 0-1)
             0 = no variation; 1 = max. variation range (from no advance to maximum-step).
-sseed – different seed values give different randomised outputs. (Range: 0 to 256)
-a – inner-events under outer-pulse-cresc advance by fixed step.
             (Default: inner-events advance to end of source, unless vary set.
-c  (Mode 2-3 only) – cycle through input sources.(Default: randomly permute order.)

Understanding the MOTOR Process

Those familiar with older (pre-welded) railway track may remember a series of sounds like "clickety-clack", pause, "clickety-clack", pause, etc. In other words, a faster "inner" pulsed sound within a slower "outer" repeating sequence.

Similarly, MOTOR creates a faster "inner" pulse-stream (at freq Hz) within a slower "outer" enveloped pulse (at pulseHz). A set of inner events is cut successively from the input sourc(es), as the outer-envelope rises, then in reverse order as it falls. This is then repeated at the "outer" pulse rate.

The relationship between the outer frequency parameter pulse and the inner one freq is not obvious, but the outer-pulse, shortened by pratio, must hold at least 2 inner-pulses.

The process handles single or multiple sources (Modes 3,6,9). The references in the modes to reads advancing or regressing refers to the "inner" cuts advancing or otherwise, within the source. Although there are many parameters, most are optional and the main difference is that Modes 2,5 and 8 use a file that specifies cut-times. It is useful to begin with fratio, pratio and sym all set to 0.5, and all optional parameters unset; then gradually explore different settings of these.

Musical Applications

...

End of MOTOR
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


PULSER – generate a pulsed stream of sound-packets by iteration

A sub-group of 3 related processes: PULSER PULSER, PULSER MULTI,   PULSER SYNTH

PULSER PULSER –
Iterate a sound to create a stream of enveloped and pitched sound-packets

Usage

pulser pulser 1 infile outfile dur pitch
             minrise maxrise minsus maxsus mindecay maxdecay speed scatter
             [-eexpr] [-Eexpd] [-ppscat] [-aascat] [-ooctav] [-bbend] [-sseed]
pulser pulser 2 infile outfile dur
             minrise maxrise minsus maxsus mindecay maxdecay speed scatter
             [-eexpr] [-Eexpd] [-ppscat] [-aascat] [-ooctav] [-bbend] [-sseed]
pulser pulser 3 infile outfile spacedata dur
             minrise maxrise minsus maxsus mindecay maxdecay speed scatter
             [-eexpr] [-Eexpd] [-ppscat] [-aascat] [-ooctav] [-bbend] [-sseed] [-wwidth]

Modes

1  Packets take spectral brightness (only) from source, and pitch from pitch parameter
2  Packets derived from (start of) source
3  Packets derived from random startpoints within source

Parameters

infile – input soundfile (MONO).
outfile – output soundfile.
dur – duration of output stream. (Range: 0.02 to 32767 secs)
pitch  (Mode 1) – MIDI pitch of packets. (Range 24 to 96; may vary over time.)
spacedata – spatialisation data: EITHER zero (stereo output)
             OR a list of channels to use (values in range 1-8, in order, no repeats)
             OR a datafile (for multi-channel output) – a set of lines, each having:
                  time, followed by a list of channnels to use (values in range 1-8, no repeated values).
minrise,maxrise – min. and max. rise-time of packet envelope (range 0.002 to 0.2 secs). Risetime is set as a random value between the 2 limits.
minsus,maxsus – min. and max. sustain-time of packet envelope (range 0.0 to 0.2 secs). Sustain is set as a random value between the 2 limits.
mindecay,maxdecay – min. and max. decay-time of packet envelope (range 0.02 to 2 secs). Decaytime is set as a random value between the 2 limits.
speed – (average) time between packets in output. (Range 0.05 to 1 sec)
scatter – randomisation of speed. (Range: 0 to 1)

-eexpr – rise slope. (Range: .25 to 4; 1 = linear, >1 steeper, <1 shallower)
-Eexpd – decay slope (Range: .25 to 4; 1 = linear, >1 steeper, <1 shallower)
-ppscat – random jitter of pitch of packets. (Range: 0 to 1 semitones)
-aascat – random jitter of amplitude of packets. (Range: 0 – no jitter – to 1)
-ooctav – amount of lower-octave reinforcement. (Range: 0 to 1)
-bbend – amount of upward pitchbend of packets. (Range: 0 to 1 semitones)
-sseed – same seed-number produces identical output on re-run. (Integer >=1)
-wwidth  (Mode 3 only) – spatialisation width. (Range: 0 to 1) Zero value produces Mono output.
             In Stereo (where spacedata = 0): width of scatter-positions of packets across stereo panorama.
             In multi-channel (where spacedata is a datafile): width of scatter-positions away from loudspeaker-centric.
             Zero value here produces outputs centred in the loudspeakers.

All parameters except dur, seed and min/maxrise, min/maxsus and min/maxdecay can vary over time.

Understanding the PULSER PULSER Process

PULSER PULSER repeats short bursts of sound - enveloped "sound packets" - at regular intervals (up to 1") to give a pulsed effect. The key parameter is speed – the speed of repetition – modifiable randomly by scatter; both of these can be time-varying.

The envelope is shaped by minrise,maxrise rise time, minsus,maxsus sustain time and mindecay,maxdecay decay time, the value in each case being set randomly between the min and max values. The steepness of the rise and decay slopes is set by the exponent values expr for rise and expdfor decay. The longest available time among these values is a maximum of 2 seconds for the decay; if longer than speed , there will be some overlap of pulses.

The pitch (Mode 1) is time-variable, so can be precisely controlled. Various optional parameters enhance pitch, amplitude or spatial variation, scattering over stereo or multi-channel space (up to 8 channels).

The process is related to PULSER MULTI, which works with multiple inputs, and PULSER SYNTH, which synthesises a pulse stream in a similar fashion

Musical Applications

...

SEE ALSO: PULSER MULTI,   PULSER SYNTH

End of PULSER PULSER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


PULSER MULTI –
Iterate a number of sounds, randomly permutated, to create a stream of enveloped and pitched sound-packets

Usage

pulser multi 1 infile1,infile2,[infile3,...] outfile dur pitch
             minrise maxrise minsus maxsus mindecay maxdecay speed scatter
             [-eexpr] [-Eexpd] [-ppscat] [-aascat] [-ooctav] [-bbend] [-sseed] [-r]
pulser multi 2,3 infile1,infile2,[infile3,...] outfile dur
             minrise maxrise minsus maxsus mindecay maxdecay speed scatter
             [-eexpr] [-Eexpd] [-ppscat] [-aascat] [-ooctav] [-bbend] [-sseed] [-r]

Modes

1  Packets take spectral brightness (only) from sources, and pitch from pitch parameter
2  Packets derived from (start of) sources.
3  Packets derived from random start-points within sources

Parameters

infile1,infile2,[infile3,...] – input soundfiles (MONO).
outfile – output soundfile.
dur – duration of output stream. (Range: 0.02 to 32767 secs)
pitch  (Mode 1) – MIDI pitch of packets. (Range 24 to 96; may vary over time.)
minrise,maxrise – min. and max. rise-time of packet envelope (range 0.002 to 0.2 secs). Risetime is set as a random value between the 2 limits.
minsus,maxsus – min. and max. sustain-time of packet envelope (range 0.0 to 0.2 secs). Sustain is set as a random value between the 2 limits.
mindecay,maxdecay – min. and max. decay-time of packet envelope (range 0.02 to 2 secs). Decaytime is set as a random value between the 2 limits.
speed – (average) time between packets in output. (Range 0.05 to 1 sec)
scatter – randomisation of speed. (Range: 0 to 1)
-eexpr – rise slope. (Range: .25 to 4; 1 = linear, >1 steeper, <1 shallower)
-Eexpd – decay slope (Range: .25 to 4; 1 = linear, >1 steeper, <1 shallower)
-ppscat – random jitter of pitch of packets. (Range: 0 to 1 semitones)
-aascat – random jitter of amplitude of packets. (Range: 0 – no jitter – to 1)
-ooctav – amount of lower-octave reinforcement. (Range: 0 to 1)
-bbend – amount of upward pitchbend of packets. (Range: 0 to 1 semitones)
-sseed – same seed-number produces identical output on re-run. (Integer >=1)
-r– selection of source file used for the next packet is entirely random.
             (Default: all files are used once, in random order, then followed by a new random order.)

All parameters except dur, seed and min/maxrise, min/maxsus and min/maxdecay can vary over time.

Understanding the PULSER MULTI Process

PULSER MULTI is a variant of PULSER PULSER, generating a stream of enveloped sound-packets taken from two or more input files. The sources are selected at random or used in randomly permutated sequences.

Parameters are the same as for PULSER PULSER: the key one is speed – the speed of repetition – modifiable randomly by scatter; both of these can be time-varying.

The envelope is shaped by minrise,maxrise rise time, minsus,maxsus sustain time and mindecay,maxdecay decay time, the value in each case being set randomly between the min and max values. The steepness of the rise and decay slopes is set by the exponent values expr for rise and expdfor decay. The longest available time among these values is a maximum of 2 seconds for the decay; if longer than speed, there will be some overlap of pulses.

The pitch (Mode 1) is time-variable, so can be precisely controlled. Various optional parameters enhance pitch, amplitude or spatial variation, scattering over stereo or multi-channel space (up to 8 channels).

The process is related to PULSER PULSER, which works with a single infile, and PULSER SYNTH, which synthesises a pulse stream in a similar fashion.

Musical Applications

...

SEE ALSO: PULSER,   PULSER SYNTH

End of PULSER MULTI
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


REPEATER – Play source, with specified elements repeating

Usage

repeater repeater 1-2 infile outfile datafile [-rrand] [-pprand] [-sseed]
repeater repeater 3 infile outfile datafile accel warp fade [-rrand] [-pprand] [-sseed]

Modes

1   Create a delay in the start times between repeated elements (i.e. can overlap).
2   Create a gap between the end of one element and the start of the next.
3   Produces a dimming, accelerating output, like a bouncing object.

Parameters

infile – input soundfile.
outfile – output soundfile.
datafile consisting of lines of 4 values:
1) Start-time of segment; 2) End-time of segment 3) No. of repeats
4) Mode 1 – the delay time between the start of one repeat and the start of the next.
0 = delay same as segment length; delays <0.05" may sound more like an oscillator.
Mode 2 – the "offset" or gap-time between the end of one repeat and the start of the next.
Mode 3 – no effect: fades are determined by other parameters.
Range (times): 0.01 to file-length (seconds)
Elements can overlap, or backtrack in the source (? earlier times are not accepted)
accel (Mode 3) – delay (and segment) shortening by the end of the repeats; e.g. accel = 2 gradually shortens delay to 1/2 its duration.
warp (Mode 3) – warp delay change. 1 = no warp; >1 shortens less initially, more later.
fade (Mode 3) – decay curve. 1 = linear, >1 fast then slow decay, <1 slow then fast.
-rrand – randomise delay:
Modes 1 & 3: extend each delay-time by a random multiple. Multiplier is generated within specified range (1 to 2).
Mode 2: extend each offset-time by a random multiple. Multiplier is generated within specified range (1 to 8).
Value 1 gives no randomisation; rand may vary through time.
-pprand – randomise pitch of repeats within given semitone range (0 to 12); prand may vary through time.
-sseed – an integer value. Repeated runs of the process with the same input and same seed value will give identical output. (-s flag is not currently recognised)

Understanding the REPEATER Process

REPEATER is one of the simplest and most versatile of the many ways within CDP to repeat segments. The repeats are specified in a datafile, each line consisting of start-time, end-time, no. of repeats and finally either (Mode 1) the delay time between repetitions or (Mode 2) the gap time between them. This value has no effect in Mode 3, which produces fading repeats. Element times can overlap, but note that each set of repetitions is laid down before the next one starts (which is not the same as simultaneous delays, as in a delay-line).

In Mode 3 (only), accel gradually shortens the delay time as skewed by warp (>1 shortens less initially and more later), while fade similarly skews the fade speed (<1 = slow then fast)

The other parameters are options for all three modes: rand randomizes the delay/gap times, prand randomizes the pitch of the repeats and seed ensures identical output with the same input and seed value. (At the present time,however, the -s flag for seed is not recognised by the program.)

Musical Applications

...

End of REPEATER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND REPETITIONS – Repeat source at given times

Usage

extend repetitions infile outfile timesfile level

Parameters

infile – input soundfile
outfile – output soundfile
timesfile – Textfile of times (in seconds) at which the source plays.
level – Level of output. Range: 0 to 1.

Level may vary over time.

Understanding the EXTEND REPETITIONS Process

This program can be thought of either as a more controlled looping function or a simple rhythm sequencer.

Musical Applications

Controlled looping or rhythmic sequencing.

End of EXTEND REPETITIONS
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


ROTOR – Generate note-sets that grow and shrink in pitch-range and speed (and spatial-width)

Usage

rotor rotor 1 fi fo env cnt minp maxp step prot trot phas dur gstp [-ddove] [-s]
rotor rotor 2-3 fi fo env cnt minp maxp step prot trot phas dur [-ddove] [-s]

Modes

1   Note-set start-times separated by time-step
2   Note-set start-time depends on spacings within current set
3   Note-set first event overlaid on last event of previous set

Parameters

fi – input soundfile (MONO), to be read at different speeds to generate output events.
         (Should start and end at sample value 0.0, OR use option -ddove)
fo – output soundfile (MONO or STEREO).
env – breakpoint file of envelope (Time-Amp) imposed over output events; envelope duration determines the duration of all events.
    Ranges: Time – nominally 0 to file-length, but can take longer values; Amp – 0 to 1
cnt – number of events in each (changing) set. (Range: 3 to 127)
minp – minimum (MIDI) pitch of events. (Range: 0 to 127)
maxp – maximum (MIDI) pitch of events. (Range: 0 to 127 > minp )
step – maximum time-step between event-onsets. (Range: 0 to 4 secs)
prot – number of notesets before pitch-sequence returns to original. (Range: 4 to 256)
trot – number of speeds before speed returns to original (Range: 4 to 256)
phas – initial phase difference between prot and trot. (Range: 0 - 1)
dur – duration of output to generate (Range: 1 to 32767 secs)
gstp  (Mode 1 only) – time-step between each note-group. (Range: 1 to 60)
-ddove – size of start/end dovetails of input soundfile. (Range: 0 to 5 mS)
-s – stereo output: output grows and shrinks in spatial width.

Understanding the ROTOR Process

ROTOR appears to generate a shimmering type of noise, which is potentially restricted to a limited pitch range. This doesn't seem to match the program description. Some sources and parameter settings produce a series of pulsed noises.

Env can be any arbitrary envelope shape, or one previously extracted as a breakpoint envelope.

Musical Applications

...

End of ROTOR
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND SCRAMBLE – Scramble soundfile and write to any given length

Usage

extend scramble 1 infile outfile minseglen maxseglen outdur [-wsplen] [-sseed] [-b] [-e]
extend scramble 2 infile outfile seglen scatter outdur [-wsplen] [-sseed] [-b] [-e]

Modes

1  Cut random chunks from infile and splice end to end
2  Cut infile into random chunks and rearrange; repeat differently, etc.

Parameters

infile – input soundfile to process
outfile – output soundfile
minseglen – minimum chunksize to cut
maxseglen – maximum chunksize to cut (Range: 0.045 to length of infile – must be > minseglen)
seglen – average chunksize to cut
scatter – randomisation of chunk lengths (>= 0)
Cannot be greater than infilesize/seglen (rounded down)
outdur – duration of outfile required (> maxseglen
-wsplen – duration of splice in milliseconds Default: 25ms)
-sseed – the same seed number will produce identical output on rerun (Default: 0, random sequence is different every time)
-b – force start of outfile to be beginning of infile
-e – force end of outfile to be end of infile

Understanding the EXTEND SCRAMBLE Process

With EXTEND SCRAMBLE, segments of soundfile are selected from a wide variety of locations in the infile, jumping back and forth a great deal.

Mode 1 takes the infile, chooses a random chunk of it, and then chooses another random chunk of it which may overlap with the first choice, then another chunk which may overlap with either of the other two ... etc. Then it splices them all together. Thus, any bits of the file may be repeated quite quickly if overlapping material is selected in consecutive chunks, and some bits may not appear at all if never randomly selected.

The size of the chunks will be a random length somewhere between minseglen and maxseglen.

Mode 2 cuts the entire file into random-length chunks which do not overlap. It arranges these at random. The process is then repeated, but the random cuts are of course in different positions in the file. Consequently, the entire file is used, and used only once, before the process starts to use the file again.

In Mode 2 an average chunksize is specified plus a random factor (scatter). The formula which shows what the maximum scatter factor can be reveals that Mode 2 can be used to make chunks which vary a great deal in length. For example, if the infile is 2 seconds long and seglen is 0.3, the maximum value for scatter will be 6.0 (rounded down). (This value was accepted – and worked – even with an outdur of 4.0.)

The 2nd Mode also provides the option to rerun with identical output.

The ability to write to any length of outfile makes it possible to give the process plenty of time to make full use of the infile.

Musical Applications

EXTEND SCRAMBLE provides a relatively automated way to fragment a soundfile in a random way, tending to swing back and forth from the beginning and end portions of the infile. The jumping about is likely to be extreme, so applied to vocal material, the results will be somewhere between wild and funny. Applied to pitched material, the result can sound like an improvisation.

For a more carefully defined zigzagging motion through a soundfile, see EXTEND ZIGZAG.

End of EXTEND SCRAMBLE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND SEQUENCE – Produce a sequence from an input sound played at specified transpositions and times

Usage

extend sequence infile outfile sequence-file attenuation

Parameters

infile – input soundfile
outfile – output soundfile, being a sequence made from the (one) input soundfile, according to the instructions in the sequence-file.
sequence-file – contains 3 values on each line, separated by tabs or spaces, one line per event: output-time semitone-transposition loudness value triples, where loudness is a loudness multiplier. There needs to be one value-triple for each event in the sequence.
attenuation – overall attenuation to apply to the source, should outfile overload

Understanding the EXTEND SEQUENCE Process

This program works like a simple conventional sequencer except that it takes only one input (see EXTEND SEQUENCE2 for multiple soundfile input. The process takes a sequence-file of triple-values:

  1. output-time – the time when you want the soundfile to come in again in the outfile
  2. transposition – the pitch-level of that entry, given in (possibly fractional) semitones
  3. amplitude – the relative level of that sound in the output sequence, louder (> 1.0) or softer (< 1.0)
for each event in the sequence. The source sound is then copied at each output-time, transposed by each transposition) amount in (fractional) semitones, and attenuated to the level specified. The result is a sequence of events derived from the one source sample.

An example sequence-file:

[time transp loudness]
0.0   0.0    0.25
1.5   3.25   0.50
3.0   7.75   1.00

Musical Applications

This function was used, for example, to make the underlying sequence of the 'Gamelan' in Trevor Wishart's compositon, Imago. Transposition or time sequences might be derived from data from other sounds, generated in the Sound Loom Table Editor or with COLUMNS, or entered by hand in a text file. EXTEND SEQUENCE is therefore a useful way to create rhythmic textures, whether simple or very intricate.

End of EXTEND SEQUENCE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND SEQUENCE2 – Produce a sequence from several sounds played at specified transpositions and times

Usage

extend sequence2 infile1 infile2 [infile3 ...] outfile sequence-file attenuation

Parameters

infile1 – input soundfile
infile2 – 2nd required input soundfile
[infile3] – optional 3rd or more additional input soundfiles. All input files must have the same number of channels.
outfile – resultant output sequence of soundfiles
sequence-file – data file in which the first line contains notional MIDI pitch values for each input soundfile and each subsequent line contains 5 values on each line, given in order from left to right, separated by spaces:
  1. input-sound-number – these numbers follow the order in which they are given as inputs
  2. output-time – time in the outfile when this event is to begin
  3. MIDI pitch – MIDI pitch level at which to perform the sound, relative to the notional pitch given in Line 1 – it may be fractional, i.e., microtonal, such as 60.5, which is ½ semitone (50 cents) higher than Middle C.
  4. loudness – relative loudness multiplier for that event. Range: 0 to 1.
  5. duration – a duration for that event: it can curtail it (i.e., truncate the source sound), but cannot extend it. Note that transposition needs to be taken into account: the maximum event length = the (transposed) duration of the sound chosen. (The transposed length will be the source length * the transposition ratio – the Music Calculator converts between transposition in (fractional) MIDI pitches and transposition in ratios.)
attenuation – overall attenuation to apply to the source, should outfile overload

Understanding the EXTEND SEQUENCE2 Process

An example sequence-file serves as a reminder of how the data is put together:

60 60
[Snds Stime MPV Level Dur]
1     0.0   60  0.25  1
2     0.5   62  0.50  2
1     1.5   63  0.25  1.5
2     2.5   64  0.50  2

Here we have a convenient way to arrange several different files in a rhythmic way, with several additional parameter settings.

  • There are two input sounds. The first one given to the program will be No. 1 and the second one will be No. 2.
  • The Start times set the times at which they begin to play.
  • The MPVs (MIDI Pitch Values) specify the pitch level relative to the notional MPVs given in the first line, one for each file, which may or may not be the actual pitch level of the sound.
  • Then the amplitude level is specified, so that certain sounds can be emphasised, different original amplitudes readjusted, etc.
  • Finally, the duration of the note event is given. It may be shorter than the original sound, but, of course, not longer. This provides an easy way to work with the attack portion of a sound, or to layer longer sounds.

Musical Applications

We are familiar with standard MIX files. They specify the sound by using its name. Here we specify the sound by using a number. This means that it is easy to list and order the sounds, as well as to use a numerical pattern generated in some other way, such as algorithmically. Also different from the standard MIX files are the pitch transposition and duration fields.

If the sound is fairly clearly pitched, such as a bell sound, then EXTEND SEQUENCE2 enables us quickly to:

•  Create a melody
•  Create a lively rhythmic pattern, with the same or different pitches
•  Pattern the loudness in a sequence of sounds
•  Use the attack of the sound we want while discarding the remainder
•  Create some 'changes' as used by bell-ringers – or any other intricate sequence of notes
Note that the same sound can be repeated. The functionality of the program is shown by combining its use with the table editing software in the CDP System. Thus we can massage the columnar data with the Table Editor in Sound Loom (= DATA, Columns in Soundshaper or just columns on the Command Line). Several different versions could be made and then each one realised with EXTEND SEQUENCE2 by loading in the various sequence-files in turn. For example, a structural ritardando could be made by adding a value to the start_time column and subtracting a value from the pitch_level column 3 or 4 times. The result is a series of output soundfiles in which several sounds repeat, placed further and further apart in time, while getting closer together in pitch.

End of EXTEND SEQUENCE2
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


SHIFTER – Generate simultaneous repetition streams, shifting rhythmic pulse from one to another

Usage

shifter shifter 1 infile outfile cycles cycdur ochans subdiv linger transit boost [-z | -r] [-l]
shifter shifter 2 infile1 infile2 [infile3 ...] outfile cycles cycdur ochans subdiv linger transit boost [-z | -r] [-l]

Example command line to create a shifting rhythmic pulse among repeating simultaneous streams:

shifter shifter 1 in.wav out.wav "cycles.txt" 1 10 4 4 0 1 1

Modes

1  Use the same input sound for all cycles
2  The number of input files must equal the number of cycles. The program assigns the input files, in order, to the cycles, in order.

Parameters

infile – input soundfile or, Mode 2, soundfiles (mono)
outfile – output (multi-channel) soundfile
cycles – a textfile listing the number of beats in each cycle.
cycdur – the duration of one complete cycle
dur – the required duration of the output sound
ochans – the number of channels in the output soundfile (mono or multi-channel, Range: 2 to 16)
subdiv – the minimum division of the beat: it needs to be > 4 and a multiple of 2 and/or 3
linger – the number of cycles that are to remain in a fixed focus
transit – the number of cycles that are to make a transition to the next focus. The sum of linger and transit must be >= 1.
boost – with standard stream level "L", add boost * L to focus stream level.
-z – This flag causes focus to ZIGZAG through the cycles. For examples, with cycles 11, 12, 13, focus moves like this: 11, 12, 13, 12, 11, 12, 13, 12 etc.
-r – This flag causes focus to select a RANDOM order of the cycles. For example, cycles 12, 11 & 13 move through those, then another random order is selected, etc.
-l – If the number of output channels is greater than 2, the loudspeaker layout is assumed to be surround-sound. The -l flag changes the loudspeaker arrangement to a linear array, with a leftmost and rightmost loudspeaker.

Understanding the SHIFTER Process

SHIFTER sets up several sound streams. In each sound stream the source sound repeats at a fixed tempo in (specified) cycles. The repetition-times for each cycle are arranged so that the streams will resynchronise (all start at the same instant) after a specified number of cycles in each stream. For example, with cycles 11,12,13, three streams are set up which repeat the sound 11,12 and 13 times, respectively, before the streams resynchronise. (This represents three streams with their tempi in the relationship 11:12:13.)

Note that the sounds themselves are NOT time-stretched; only the timings-between-repetitions are different in the different cycles. The various "focusing" parameters determine which of the simultaneous tempi is the most prominent at any time.

Care should be taken to keep the input level very low, to avoid overflow as sounds are mixed in the SHIFTER process. Modify loudness 4 (Force level) might be set to e.g. 0.05.

Musical Applications

...

End of SHIFTER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


SHRINK – Repeat a sound, shortening it on each repetition

Usage

shrink shrink 1-3 infile outfile shrinkage gap contract dur spl [-ssmall] [-mmin] [-rrnd] -n -i
shrink shrink 4 infile outfile time shrinkage gap contract dur spl [-ssmall] [-mmin] [-rrnd] -n -i
shrink shrink 5 infile generic-outfile-name shrinkage wsiz contract aft spl [-ssmall] [-mmin] [-rrnd] [-llen] [-ggate] [-qskew] -n -i -e -o
shrink shrink 6 infile generic-outfile-name peaktimes shrinkage wsiz contract aft spl [-ssmall] [-mmin] [-llen] [-ggate] [-rrnd] -n -i -e -o

Example command line to create compressing sound events:

shrink shrink 1 inf.wav outf.wav 0.25 5 0.8 30 15

Modes

1  Shrink from the end
2  Shrink around the midpoint
3  Shrink from the start
4  Shrink around a specified time
5  Shrink around found peaks and output each segment as a separate soundfile, also creating a mixfile with which to assemble them
6  Shrink around specified peaks and output each segment as a separate soundfile, also creating a mixfile with which to assemble them

Parameters

infile – input soundfile
outfile – output soundfile
generic-outfile-name – Modes 5 & 6: rootname for several soundfile outputs; a numeral is appended to the rootname
shrinkage – shortening factor of sound from one repeat to the next. Shrinkage stops once events become too short for splices.
time (Mode 4) – time around which shrinkage takes place
gap – initial timestep in seconds between output events (Range: 4.899932 to 60.0)
peaktimes (Mode 6) – a textfile list of the times where peaks occur in the input soundfile
contract – shortening of gaps between output events: 1.0 = events are equally spaced, < 1.0 = events become closer together. Events cannot overlap, so the minimum contraction is the maximum shrinkage.
dur – the (minimum) duration of the output
aft (Modes 5-6) – time after which the shrinkage begins
spl – splice length in milliseconds
wsiz (Modes 5-6)– windowsize in milliseconds for extracting the envelope (Range: 1 to 100, Default: 100)
-ssmall – the minimum sound length, after which sounds are of equal length
-mmin – the minimum event separation, after which events are regular in time
-rrnd – randomisation of timings after which events are regular in time
-llen – the minimum segment length before sound squeezing can begin; used with the -e flag
-ggate – the level relative to max below which found peaks are ignored (Range: 0 to 1, Default: 0)
-qskew – how the envelope is centred on the segment (Range: 0 to 1, Default 0.25; 0.5 = central position and a zero value switches the flag off.)
-n – equalise the maximum level of output events (if possible)
-i – Inverse: reverse each segment in the output. Note that then reversing the outfile creates a stream of unreversed segments where segments expande/accelerate rather than shrink/contract.
-e (Modes 5-6) – Even Squeeze: sounds shorten in a regular manner starting with the first squeezed segment. Note that squeezed sound lengths are not dependent on the length of the input segments.
-o (Modes 5-6) – omit any events that are too quiet once a fixed end tempo has been reached

Understanding the SHRINK Process

With SHRINK a sound is repeated, and at each repetition it gets shorter in duration because some of it is removed, and the gap between repetitions shrinks. In Modes 5 & 6 the events in the sound are also isolated. The range for the gap between repetitions starts at a relatively high value (4.899932 sec. ) to allow scope for the time-compression of start times of the repetitions.

Musical Applications

The example command line above used an input file that was 4.9 seconds in duration. An output duration of 30 sec. was specified, giving SHRINK plenty of time to create its repetitions of ever decreasing size as well as increasingly closer together. At the end of the resultant soundfile, it was like something bouncing or rotating very rapidly just before coming to a halt. SHRINK allows similar effects to be achieved in an automated way, another example of the semi-algorithmic nature of many of the CDP programs.

End of SHRINK
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


SORTER – Chop sound into elements, then reorganise by loudness or duration

Usage

sorter sorter 1-4 infile outfile esiz [-ssmooth] [-oopch] [-ppch] [-mmeta] [-f]
sorter sorter 5 infile outfile esiz seed [-ssmooth] [-oopch] [-ppch] [-mmeta] [-f]

Modes

1   Sort to Crescendo – re-order elemnts by increasing loudness
2   Sort to Decrescendo – re-order elements by decreasing loudness
3   Sort to Accelerando – re-order elements so they speed up (if small, pitch may rise)
4   Sort to Ritardando – re-order elements so they slow down (if small, pitch may fall))
5   Order elements randomly

Parameters

infile – input soundfile (MONO).
outfile – output soundfile (MONO)
esiz – approximate size of elements to sort, in seconds. (Range: 0 to infile-length)
         If zero, individual wavesets are chosen as elements.
seed  (Mode 5) – random order: same seed no. gives same ordering on a re-run; 0 gives different order each time (Range: 0 to 256)
-ssmooth – Splice length to fade in and out each segment. Parameter is ignored if element size (esiz) is zero. (Range: 0 to 50 mS)
-oopch – output elements with separation equivalent to MIDI pitch opch.
         (Range: 1 to 127 (MIDI), or 0 – ignored, or 128: use median pitch of source if -f flag also set

The following parameters can only be used if -f flag is set:
-ppch – transpose the input elements to the MIDI pitch specified. (MIDI range: 0 to 127; if 0, parameter is ignored.)
         If set to 128, the median pitch of the source is used.
-mmeta   (only useful if -ppch is set) – size of meta-grouping, in seconds; allows larger units to be (approx.) pitch-correlated.
(The source is first cut to pitch-wavelength-scale elements and transpositions are calculated. Then these elements are further grouped to approx. meta group size.)
Value must be larger than largest element (1/freq) from frequency trace. If set to zero, the parameter is ignored.
         If -ppch is not set, larger groupings are obtained by a larger value of esiz.

-f – element-size (esiz) is read as a frequency value (= 1.0/duration) and could be a frequency-trace of the source pitch.

Understanding the SORTER Process

SORTER cuts elements from the source and re-orders them by size or loudness. (This is very similar to SCRAMBLE.) The main parameter is the Element-size (esiz) to be cut from the source. This can be time-varying, though the elements must not overlap *t.b.c.). If zero, it uses individual wavesets.

The other main parameter is the optional Output-pitch (opch), which causes elements to be output with separation equivalent to its MIDI pitch value. It is not entirely clear what this means, although wavesets are seen in other processes as having a frequency (e.g. DISTORT MULTIPLY). The higher this value, the faster the elements are output. (A suitable starting point might be <10.)

There is enough variation here to generate all manner of jumbled re-orderings, though many of them arguably sound much the same.

SPECIAL NOTE:
The extra parameters used with the -f flag have given the following recurring error messages –
1) If the element-size (esiz) is not time-varying, the following error is given, if Output-pitch (opch) is used:
      "ERROR: Cannot transpose elements to a given pitch if sizedata is not time-varying frequency"
2) If the -f flag is set, the following invariably occurs:
      "ERROR: Elementsize (0.2) too big for infile. (If data's frq, set flag)".
      This seems to happen whatever element size is used.

Musical Applications

...

End of SORTER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


STUTTER – Randomly repeat segments cut from elements

Usage

stutter stutter infile outfile datafile dur segjoins silprop silmin silmax seed [-ttrans] [-aatten] [-bbias] [-mmindur] [-p]

Parameters

infile – input soundfile.
outfile – output soundfile
datafile – list of times at which to slice source into elements
         Minimum timestep between times = 0.016 secs; maximum is file-length-Min.
dur – duration of output.
segjoins – Value 1: use the specified elements as sources to cut
                 Value 2: also use pairs of segments as sources
                 Value N: also use 2,3,...N joined-segments as sources
                 (Range: 1 to 8)
silprop – if silence is inserted at joins between cut-segments, the proportion of joins to have inserted silence.
               Range 0 (no silence) to 1; if >0, minimum is 1 in 20 (0.05)
silmin – minimum duration of any silences at joins. (Range: 0-10)
silmax – maximum duration of any silences at joins. (Range: 0-10)
seed – same seed value (with all other params same) produces identical output from any random-varying processes.
-ttrans – range of any random transposition of segments. (Range: 0-3 semitones)
-aatten – range of any random attenuation of segment level. (Range 0-1)
-bbias – bias size of segments cut. (Range -1 to 1; 0 = no bias.)
              Negative values bias towards smaller segments; positive values towards larger ones.
-mmindur – minimum duration of cut segments. (Range: >8mS to 250mS).
-p – permutate elements: all elements are used before any used again. (Default: segments cut from elements taken entirely at random.)
              If option set: randomly order elements, cut segments from each and play; then permute order, cut new segments and play, etc.

Understanding the STUTTER Process

The source sound (e.g. speech) is sliced into elements (e.g. words or syllables). Segments are cut from elements, always cutting from the start of the element. These are then played in a random order, with possible intervening silence.

Musical Applications

...

End of STUTTER
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


TESSELATE – Create repeating patterns with shift in space and time

Usage

tesselate tesselate infile1 [infile2, infile3, ...] outfile datafile chans cycledur outdur type [-ffrom]

Parameters

infile – input soundfile(s) (MONO).
outfile – output soundfile (STEREO or MULTI-CHANNEL).
datafile – textfile containing two lines, with the same number of entries per line; the number of entries corresponding to the number of input files:
         Line 1 – Lists number of repeats before time-delayed repeat-cycle re-sychronises with the "cycledur"-delayed source.
         For example, with value 5,
         x    x    x    x    x    x    x   – "cycledur"-delayed source
         x     x     x     x     x     x   –  time-delayed source
         Line 2 – time-delay of initial entry of each source; maximum time-delay must be < cycledur.
         Allows sources to be arranged in some initial rhythmic order.
         For example, 0.0 0.1 0.2 0.3 0.4 0.45 0.55 0.7

chans – number of output channels. (Even number >= 2)
cycledur – delay between repetitions; the same for every source (secs).
         Sources can have a staggered entry, so they form a rhythmic phrase (see datafile, line 2).
         An increase in the delay on paired-channel(s) is determined by line 2 in the datafile.
outdur – duration of output sound (secs).
type –
         0: Delay drift between odd and even channels (e.g. 1 3 5 7 v. 2 4 6 8).
         1: Delay drift between adjacent channels (1 v. 2, 2 v. 3, 3 v. 4, etc).
         2: Delay drift between alternate channels (1 v. 3, 2 v. 4, 3 v. 5, etc).
         3 :Delay drift between every 3rd channel (1 v. 4, 2 v. 5, 3 v. 6, etc).
         and so on.
-ffrom – the pattern normally starts with all channels in sync. at time zero.
              To start later in the pattern, specify an integer number of cycles from which to start outputting sound (not working at the time of writing).

Understanding the TESSELATE Process

TESSELATE repeats a number of different (mono) sources with staggered start-times and projects these across stereo or multi-channel space. The whole of each source is used and is repeated over the course of the given outfile-length (outdur), with overlapping as necessary. The number of repeats and the starting times for each are given in the datafile, lines 1 and two respectively. For example, with three sources:
     line 1 – 5    5    5
     line 2 – 0.0 0.1 0.2
The delay-time between repeats (the same for each source) is set by cycledur. All sources start at different times (the program objects if they're the same).

The pattern normally starts with all channels synchonized at time zero. As sounds are repeated they drift out of sync; this delay drift is projected across different channels, as set by the type parameter.

Although the sounds are supposed to be different, the same source could be used by first copying it to different filenames.
The process is perhaps best explored using short sounds (such as single words or notes) to appreciate the cross-rhythms it creates. Similar cross-rhythmic processes are CERACU and SHIFTER.

Musical Applications

...

SEE ALSO: CERACU and SHIFTEAR.

End of TESSELATE
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index


EXTEND ZIGZAG – Read soundfile backwards and forwards, as you specify

Usage

extend zigzag 1 infile outfile start end dur minzig [-ssplicelen] [-mmaxzig] [-rseed]
OR:
extend zigzag 2 infile outfile timefile [-ssplicelen]

Modes

1  Random zigzags: start and end at beginning and end of infile
2  Zigzagging follows times supplied by the user

Parameters

infile – input soundfile to process
outfile – output soundfile
start – together with ...
end – define the time interval in which the zigzagging occurs
dur – total duration of output sound required
minzig – minimum acceptable time between successive zigzag timepoints
-ssplicelen – length of splice slope in milliseconds (Default: 25ms)
-mmaxzig – maximum acceptable time between successive zigzag timepoints
-rseed – number to generate a replicable random sequence (> 0 – Default: 0, random sequence is different every time)
Entering the same number on the next program run generates the same sequence.
timefile – text file containing sequence of times to zigzag between
Each step-between-times must be > (3 * splicelen). NB: Zigsteps moving in the same (time-)direction will be concatenated.

Understanding the EXTEND ZIGZAG Process

What is special about this process is that it actually reads the source soundfile backwards when it moves from a later to an earlier timepoint.

It is expected that a user timefile will normally alternate between earlier and later times. Moving in the same direction is a bit pointless. If two steps move in the same direction, a Warning message is generated, on the assumption that this was an accidental entry by the user, e.g., a time was omitted. However, it still produces an output.

The timefile is written as a series of times in seconds, either horizontally with spaces between the times, or with each time on a separate line.

Musical Applications

Because moving from later to earlier times reads the source backwards, the effect of the zigzag transforms the sonic material much more than with EXTEND SCRAMBLE. The degree to which this happens depends on the duration between earlier and later times when moving from earlier to later, i.e., how much of the source is actually read forwards.

EXTEND ZIGZAG is a good way to begin to transmute sonic material into something more abstract. It can also be handled in such a way as to create a powerful warping effect: by making the forwards and backwards reads over fairly long durations. Short backwards and forwards movements create a stuttering or repeated note effect. (See diagram below, by Louisa Yong).

[Under a time line of 5 sec, a red line
zigzags downwards, to the Left is backwards in time, to the Right is
forwards.]
Diagram of a Zigzag

SEE ALSO: MCHZIG: multichannel version of ZIGZAG.

End of EXTEND ZIGZAG
Return to list of EXTEND functions at top of this file
Return to Main Index for the CDP System.
Return to 'Groucho' Time-Domain Index

Last Updated 28 Apr 2023 for CDP8
Documentation: Archer Endrich
Revcisions: Robert Fraser
All observations & ideas for improvement appreciated
Composers Desktop Project
Email: composersdesktop@gmail.com
© Copyright 1998-2023 Archer Endrich & CDP