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
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.
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
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.
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.)
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
Example command line to create polyphonic repetition-streams:
ceracu ceracu in.wav out.wav "cyclecounts.txt" 0.5 4 10 0 0
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.)
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.
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
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
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.
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 sobrietyParameters
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.ambitus half-width of the region from within which the sound segments are read (seconds)
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.
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.
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.brkonto 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.
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.brkFor 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 .5EXAMPLE 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 infilelocus3.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.brkEXAMPLE 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.brkEXAMPLE 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.brkEXAMPLE 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.brkEXAMPLE 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.brkMy 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 TUTORIALEnd 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 timesParameters
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 timetimesfile (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:loc time in infile from which samples are read.
• frq = 1 Hz: reads 22050 samples forward and 22050 samples back.
• frq = 10 Hz: reads 2205 sampless forward and 2205 samples back.
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:loc time in infile from which samples are read.
• frq = 1 Hz: reads 22050 samples forward and 22050 samples back.
• frq = 10 Hz: reads 2205 sampless forward and 2205 samples back.
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 timesParameters
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:
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)Parameters
2 Step between transpositions (discrete pitch changes)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)Parameters
2 Step between transpositions (discrete pitch changes)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
- 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
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:
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.anch-ncho-chov-hovi-ovie-vies
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-packetsUsage
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-packetsUsage
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 sourcesParameters
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 repeatsaccel (Mode 3) delay (and segment) shortening by the end of the repeats; e.g. accel = 2 gradually shortens delay to 1/2 its duration.
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)
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).-pprand randomise pitch of repeats within given semitone range (0 to 12); prand may vary through time.
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.
-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 setParameters
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 overloadUnderstanding 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:
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.
- output-time the time when you want the soundfile to come in again in the outfile
- transposition the pitch-level of that entry, given in (possibly fractional) semitones
- amplitude the relative level of that sound in the output sequence, louder (> 1.0) or softer (< 1.0)
An example sequence-file:
[time transp loudness] 0.0 0.0 0.25 1.5 3.25 0.50 3.0 7.75 1.00Musical 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:attenuation overall attenuation to apply to the source, should outfile overload
- input-sound-number these numbers follow the order in which they are given as inputs
- output-time time in the outfile when this event is to begin
- 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.
- loudness relative loudness multiplier for that event. Range: 0 to 1.
- 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.)
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 2Here 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 melodyNote 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.
• 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
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", addboost * 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 themParameters
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 betweenEach 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).
Diagram of a ZigzagSEE 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