Return to Main Index for the CDP System.
Return to Groucho Index

CDP circles logo

CDP Distort Functions
(with Command Line Usage)

Functions to DISTORT soundfiles via pseudo-wavecycles

AVERAGE
Average the waveshape over N 'wavecycles'
CYCLECNT
Count 'wavecycles' in soundfile
DELETE
Time-contract soundfile by deleting 'wavecycles'
DIVIDE
Distortion by dividing 'wavecycle' frequency
ENVEL
Impose envelope over each group of cyclecnt 'wavecycles'
FILTER
Time-contract a sound by filtering out 'wavecycles'
FRACTAL
Superimpose miniature copies of source 'wavecycles' onto themselves
HARMONIC
Harmonic distortion by superimposing 'harmonics' onto 'wavecycles'
INTERACT
Time-domain interaction of two sounds
INTERPOLATE
Time-stretch file by repeating 'wavecycles' and interpolating between them
MULTIPLY
Distortion by multiplying 'wavecycle' frequency
OMIT
Omit A out of every B 'wavecycles', replacing them with silence
OVERLOAD
Clip the signal with noise or a (possibly timevarying) waveform
PITCH
Pitchwarp 'wavecycles' of sound
PULSED
Impose regular pulsations on a sound
REFORM
Modify the shape of 'wavecycles'
REPEAT
Timestretch soundfile by repeating 'wavecycles'
REPLACE
The strongest 'wavecycle' in a cyclecnt group replaces the others
REPLIM
Timestretch by repeating 'wavecycles' (below a specified frequency)
REVERSE
Cycle-reversal distortion in which the 'wavecycles' are reversed in groups
SHUFFLE
Distortion by shuffling 'wavecycles'
TELESCOPE
Time-contract sound by telescoping N wavecycles into 1

On the whole, words cannot be found to describe the aural results of the DISTORT processes, so the Musical Applications sections below are notably sparse. You'll just have to run them for yourselves!
For a technical discussion of these processes, see Richard Dobson's Introduction to the T Wishart DISTORT Functions

DISTORT AVERAGE – Average the waveshape over N 'wavecycles'

Usage

distort average infile outfile cyclecnt -mmaxwavelen -sskipcycles

Parameters

infile – soundfile to process
outfile – output soundfile
cyclecnt – number of cycles over which to average (Range: > 1)
-mmaxwavelen – maximum permissible wavelength in seconds (Default: 0.50)
-sskipcycles – (integer) number of wavecycles to skip at start of file

Understanding the DISTORT AVERAGE Process

DISTORT AVERAGE performs a mathematical averaging of the data in cyclecnt pseudo-wavecycles. The effect is more akin to a loss of resolution than the blurring which might be expected. Values below 10 retain some semblance of the original, while values of, for example, 100 seem to create a kind of 'sample hold' effect. For modest distortion, values 5 or less are recommended.

Musical applications

Mushy, watery, aspects of tracing, discrete sample-hold effects...

End of DISTORT AVERAGE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT CYCLECNT – Count 'wavecycles' in soundfile

Usage

distort cyclecnt infile

Parameters

infile – soundfile to examine

Understanding the DISTORT CYCLECNT Process

DISTORT CYCLECNT checks the waveform of the infile for zero crossings, determining how many segments lie between these crossings. It then displays this figure on screen.

Musical applications

This information ú the number of 'waveycles' in a file – can help predict the level of distortion a given process might produce.

End of DISTORT CYCLECNT
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT DELETE –Time-contract soundfile by deleting 'wavecycles'

Usage

distort delete mode infile outfile cyclecnt -sskipcycles

Modes

1 One 'wavecycle' in every cyclecnt 'wavecycles' is retained
2 The strongest (single) 'wavecycle' in every cyclecnt 'wavecycles' is retained
3 The weakest (single) 'wavecycle' in every cyclecnt 'wavecycles' is deleted

Parameters

infile – soundfile to process
outfile – output, time-contracted, soundfile
cyclecnt – groups of 'wavecycles': really the level of resolution at which the process will work
Cyclecnt may vary over time.
-sskipcycles – (integer) number of 'wavecycles' to skip at start of file

Understanding the DISTORT DELETE Process

Mode 1 dramatically removes data from the infile, leaving very little behind. Mode 2, because it sets out to retain the strongest (i.e., highest amplitude) 'wavecycle' in each set, retains more recognisable features from the original. Mode 3 takes this further be deleting the weakest (i.e., lowest amplitude) 'wavecycle' in each set. The three Modes, therefore, enable the user to target levels of recognisability.

Because the 'wavecycles' are of irregular lengths, the idea of 'resolution' is only relative. However, it helps picture the degree to which the infile is divided up into units. Then one 'wavecycle' from each of these units is retained or deleted according to the operation of each mode.

The skipcycles parameter makes it possible to have this process begin some time after the start of the sound, e.g., so that its start transient, so vital to the recognition of the source of a sound, is not affected.

Musical applications

This process achieves a time-compression and textural roughening of the source.

End of DISTORT DELETE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT DIVIDE – Distortion by dividing 'wavecycle' frequency

Usage

distort divide infile outfile N [-i]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
N – divider (Range: integer only, 2 to 16)
-i – use waveform interpolation: slower but cleaner

Understanding the DISTORT DIVIDE Process

Without altering duration, this process effectively lowers the sound while adding a rough texture.

Musical applications

This is a useful form of distortion because it roughens the sound without being too violent about it.

End of DISTORT DIVIDE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT ENVEL – Impose envelope over each group of cyclecnt 'wavecycles'

Usage

distort envel 1-2 infile outfile cyclecnt -ttroughing -eexponent
distort envel 3 infile outfile cyclecnt troughing -eexponent
distort envel 4 infile outfile envfile cyclecnt

Modes

1 Rising envelope
2 Falling envelope
3 Troughed envelope
4 User-defined envelope

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
envfile – defines user envelope as time value pairs (Range of value is 0 to 1)
The time units in envfile are in fact arbitrary because in each case the envelope is stretched to fit the duration of each cyclecnt set.
cyclecnt – number of 'wavecycles' under a single envelope
[-t]troughing – the trough depth of the envelope (Range: 0 [most troughed] to 1 [least troughed], Default = 0)
-eexponent – exponent to shape envelope rise or decay
Cyclecnt, troughing and exponent may vary over time.

Understanding the DISTORT ENVEL Process

The process takes the amplitude envelope data for each group of cyclecnt 'wavecycles' and adjusts this data to form a single envelope shape (for that group) according to the mode selected.

Musical applications

The same pattern repeats (irregularly), being reasonably fine or quite coarse depending on the size of cyclecnt. This can be likened to creating a somewhat irregular sawtooth edge on the sound.

The exponent and envfile parameters can be used to customise/intensify the effect of the enveloping.

Here are some possible results with different values for cyclecnt :

One of the most telling applications of DISTORT ENVEL is to create irregular phasing effects. The most important tool for this is a time-varying breakpoint file for cyclecnt, which can be used to introduce large variations in the length of each envelope shape. If this is done in two different ways (i.e., two different breakpoint files), then the two resultant (mono) files can be combined with SUBMIX INTERLEAVE to form a stereo file with phased cyclecnt envelope shapes.

End of DISTORT ENVEL
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT FILTER – Time-contract a sound by filtering out 'wavecycles'

Usage

distort filter 1-2 infile outfile freq [-sskipcycles]
distort filter 3 infile outfile freq1 freq2 [-sskipcycles]

Modes

1 Omit cycles below freq
2 Omit cycles above freq
3 Omit cycles below freq1 and above freq2

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
freq – frequency in Hz (Range: 10.0 to 22050.0)
freq1 – frequency in Hz to delete below
freq2 – frequency in Hz to delete above -sskipcycles – (integer) number of 'wavecycles' to skip at start of file

Understanding the DISTORT FILTER Process

Period and frequency are inverse functions. Therefore it is possible to relate the length of a 'wavecycle' to the frequency it would have were it to recur regularly. This program therefore filters by removing 'wavecycles' shorter or longer than those relating to a specific, user-defined, frequency.

The duration of the outfile is affected by this process: because 'wavecycles' are being removed, the outfile will be shorter, by varying degrees.

Musical applications

The aural effect of the DISTORT FILTER process is actually like gating. In gating, you can imagine a horizontal line drawn through the time/amplitude display of a soundfile. If the peaks above the line are retained (by filtering out lower frequencies), you just hear them (joined up). Similarly, if you filter out above the line, the peaks are gone, leaving the lower sound material (joined up).

The difference here is that the process is operating on 'pseudo-wavecycles' according to their length, so here the results are more unpredictable and also distort the sound to some degree, depending on where the horizontal line – the frequency variable(s) – is drawn. Technically, the process is akin to low-, high- and band-pass filters, but aurally it is more like gating.

You can therefore use this procedure to cut out some and distort other material in a sound.

End of DISTORT FILTER
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT FRACTAL – Superimpose miniature copies of source 'wavecycles' onto themselves

Usage

distort fractal infile outfile scaling loudness [-ppre_attenuation]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
scaling – (integer) division of scale of source wave (Range: 2 to sample_rate/2)
loudness – loudness of scaled component relative to source (Loudness of source is reckoned to be 1.0)
Scaling and loudness may vary over time.
-ppre_attenuation – apply attenuation to infile before processing

Understanding the DISTORT FRACTAL Process

Note the very wide range of scaling. Because it is a divisor, the larger the value of scale the shorter will be the miniature copies to be superimposed.

These superimposed copies can be made to increase (be careful!) or decrease in amplitude with the loudness parameter. Using a value of 1.0 maintains the original amplitude of the infile, which will be heard as pretty much as the original, but with the superimpositions on top of it. Loudness is therefore a means of balancing the input and the processed sound components.

Musical applications

This is a powerful and somewhat wild tool for producing distortion effects. The higher the value of scaling, the more the superimposed copies appear as a sheen of distortion above the original sound.

End of DISTORT FRACTAL
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT HARMONIC – Harmonic distortion by superimposing 'harmonics' onto 'wavecycles'

Usage

distort harmonic infile outfile harmonics-file [-ppre_attenuation]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
harmonics-file – contains harmonic_number amplitude pairs -ppre_attenuation – apply attenuation to infile before processing

Understanding the DISTORT HARMONIC Process

Harmonic distortion multiplies and adds within a single 'wavecycle' – possibly several times. For each harmonic_number in the harmonics-file, DISTORT HARMONIC scales and copies the shape of the 'wavecycle' harmonic_number times and adds the result to the original at the given amplitude (relative to that of the infile). This is by direct analogy to harmonic additive synthesis, in which a complex pitched sound is created by adding sinusoidal partials. Indeed, DISTORT HARMONIC can be used for just this purpose by using a sine wave as input.

There is no internal scaling of harmonic amplitude values. It will be necessary in many cases to scale the infile with the prescale parameter to avoid overflow. Prescale is a multiplier, like an ordinary gain factor. (See the Gain – dB Chart).

Musical applications

The higher 'harmonics' of the 'wavecycles' are heard as faster versions superimposed on the original 'wavecycle' and on the lower 'harmonics'. Therefore, the application is to add these higher and denser levels of distortion to the sound.

End of DISTORT HARMONIC
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT INTERACT – Time-domain interaction of two sounds

Usage

distort interact mode infile1 infile2 outfile

MODES

1 Interleave 'wavecycles' from the two infiles
2 Impose 'wavecycle' lengths of 1st file on 'wavecycles' of 2nd

Parameters

infile1 – input soundfile number 1
infile2 – input soundfile number 2
outfile – output soundfile

Understanding the DISTORT INTERACT Process

In Mode 1 material from both soundfiles is audibly apparent due to the interleaving process. In Mode 2, the distortion is almost total: the alteration of the 'wavecycle' lengths of the second sound changes it to a burbly, bubbly, seething mass.

Musical applications

DISTORT INTERACT can be used to achieve distortion which combines data from two different sounds or distortion which totally alters a sound.

End of DISTORT INTERACT
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT INTERPOLATE –Time-stretch file by repeating 'wavecycles' and interpolating between them

Usage

distort interpolate infile outfile multiplier [-sskipcycles]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
multiplier – (integer) number of times each 'wavecycle' repeats
Multiplier may vary over time.
-sskipcycles – (integer) number of 'wavecycles' to skip at start of file

Understanding the DISTORT INTERPOLATE Process

With this process, the shape of a 'wavecycle' is transformed into that of the next over multiplier repetitions. Note that this is waveshape-based interpolation, not a spectral interpolation, and that the length of the 'wavecycle' is also transformed by the process.

The effect of the transformation is drastic, leading to a strongly granular outfile. The length of the outfile increases in step with the value of multiplier, as does the apparent pitchiness.

Musical applications

The interpolation process adds a modulatory quality to the output, so that the successive wavecycles gliss and bend as they flow into one another. Even so, as multiplier increases, the perception of separate 'grains', i.e., 'wavecycles' increases. A value of 32, for example, changes the sound to a strange stream of modulating tones.

End of DISTORT INTERPOLATE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT MULTIPLY – Distortion by multiplying 'wavecycle' frequency

Usage

distort multiply infile outfile N [-s]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
N – multiplier (Range: 2 to 16, integer only)
-s – smoothing (try this if glitches appear)

Understanding the DISTORT MULTIPLY Process

The duration of the sound is not changed, only the frequency of the 'wavecycles', with the result that the pitch rises.

Musical applications

The distortion is relatively mild, in that the original sound remains recognisable. However, the surface is textured and the pitch rises with each increase in the value of N. DISTORT MULTIPLY can be used, for example, to create high, modulating, grainy vocal sounds.

End of DISTORT MULTIPLY
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT OMIT – Omit A out of every B 'wavecycles', replacing them with silence

Usage

distort omit infile outfile A B

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
A – number of 'wavecycles' to omit
B – size of group of 'wavecycles' out of which to omit A 'wavecycles'
A may vary over time, but must always be less than B.

Understanding the DISTORT OMIT Process

Because the omitted 'wavecyles' are replaced by silence, the overall duration of the sound does not change. The larger the proportion of 'wavecycles' omitted from B, of course, the more distorted the the sound becomes. This distortion is like a rough texturing, rather than the highly modulatory results of some of the other processes.

Musical applications

This process can be used, therefore, to achieve a rough texturing with no loss of duration.

End of DISTORT OMIT
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT OVERLOAD – Clip the signal with noise or a (possibly timevarying) waveform

Usage

distort overload 1 infile outfile clip-level depth
OR
distort overload 2 infile outfile clip-level depth freq

Parameters

infile – input soundfile (MONO only)
outfile – output soundfile
clip-level – level at which the signal is to be clipped (Range: 0 to 1) The signal level is renormalised after clipping.
depth – depth of the pattern of distortion imposed on clipped stretches of the signal. (Range: 0 to 1)
freq – frequency of the waveform imposed on clipped stretches of the signal
Clip-level, depth, and freq may vary over time.

Understanding the DISTORT OVERLOAD Process

The clip-level parameter is rather like a 'gate' level. If the signal level is already high, anything over, for example, 0.1 is likely to push it into distortion, and values considerably higher than this will make it heavily distorted. However, if it only distorts, Trevor advises me, when it reaches a level of, for example, 0.99, it is not going to be distorted very often.

The sound doesn't actually have amplitude overload, because it is distorted by 'slicing off' the top (clipping) where it would have overloaded. The sound becomes loud and 'strained', like a voice which is shouting too loudly.

Mode 2 can add an extra ringing sound as the value for freq gets higher, e.g., 2000Hz and beyond.

Musical applications

Given the trials made so far, this can be a fairly subtle effect, but the words 'straining', 'loud', 'uncompromising' seem appropriate as the amplitude gets pushed towards the top of the range.

End of DISTORT OVERLOAD
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT PITCH – Pitchwarp 'wavecycles' of sound

Usage

distort pitch infile outfile octvary [-ccyclelen] [-sskipcycles]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
octvary – maximum possible transposition up or down in (fractions of) octaves (Range > 0.0 to 8.0)
Note that the pitch of each 'wavecycle' is varied by a random amount within the range of octvary octaves up to octvary octaves down: i.e., the value for octvary covers a total up/down range of 2 * octvary.
-ccyclelen – mamimum number of 'wavecycles' between the generation of transposition values (Range: > 1, Default: 64)
Octvary and cyclelen may vary over time.
-sskipcycles – (integer) number of 'wavecycles' to skip at start of file

Understanding the DISTORT PITCH Process

The random up/down movement of the 'wavecycles' within the total octvary range produces a great deal of bending of the sound, especially if the original alters its pitch a good deal. It is better, therefore, to start with relatively small values for octvary – e.g., less than 1 – so that you start to use this function with some degree of control over the results.

The full power of DISTORT PITCH doesn't really come into its own until time-varying parameters are used, especially for cyclecnt. Large values for the latter will serve to slow down the rate of change.

Musical applications

DISTORT PITCH is useful for creating 'flexitones' (to coin a term) – with distortion, of course.

End of DISTORT PITCH
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT PULSED – Imposed regular pulsations on a sound

Usage

distort pulsed 1 infile outfile stime dur frq frand trand arand transp tranrand [-s -e]
OR
distort pulsed 2-3 infile outfile stime dur frq frand trand arand cycletime transp tranrand [-s -e]

Modes

1 Impose impulse-train on source
2 Use a segment of the source as the looped content of a synthetic impulse-train

Parameters

stime – time in the source sound where the impulses begin. In Mode 3, stime is given as samplecnt, i.e., number of samples
dur – length of time that the impulses continue
frq – number of impulses per second
frand – number of semitones by which to randomise the frequency of the impulses
trand – amount of time in seconds by which to randomise the relative time positions of amplitude peaks and troughs from impulse to impulse
arand – randomisation of the amplitude shape created by the peaks and troughs from impulse to impulse
cycletime – Mode 2: duration in seconds of wavecycles to grab as sound substance inside the impulses
OR Mode 3: number of wavecycles to grab as sound substance inside the impulses
transp – transposition contour of sound inside each impulse
tranrand – randomisation of transposition contour from impulse to impulse
-s – keep start of source sound, before impulses begin (if any)
-e – keep end of source sound, after impulses end (if any)

Only works on MONO files

Understanding the DISTORT PULSED Function

Distort a sound by imposing a series of impulses on the source, or on a specific waveset segment of the source. An impulse is like a brief event created by a sharp envelope on the sound. The sound inside the impulse might glissando slightly, as if whatever is causing the impulsion has warped the sound by its impact.

Musical applications

.

End of DISTORT PULSED
Return to List of functions for interacting spectra at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT REFORM – Modify the shape of 'wavecycles'

Usage

distort reform 1-7 infile outfile
distort reform 8 infile outfile exaggeration

MODES

1 Convert to fixed level square wave
2 Convert to square wave
3 Convert to fixed level triangular wave
4 Convert to triangular wave
5 Convert to inverted half-cycles
6 Convert to click stream
7 Convert to sinusoid
8 Exaggerate waveform contour

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
exaggeration – exaggeration factor (Range: 0.000002 to 40.0)
Exaggeration may vary over time.

Understanding the DISTORT REFORM Process

This process reads each 'wavecycle' (sound inbetween zero crossings) and replaces it with a different waveform of the same length. Several waveform options are provided. Those which do not fix the amplitude level respond to the varying amplitude levels of each successive wavecycle, thus producing an additional (and arbitrary) distortion feature.

The 'fixed level' options produce consistently loud output.

The 'click' option replaces each 'wavecycle' with a mishmash of square pulses several samples long (random sizes), which sounds a bit like a rattle.

The 'sinusoid' option, as might be expected, is relatively smooth. It is actually a subtle form of filtering. The sine waves vary in length and amplitude because they are based on 'wavecycles' and because only some of the 'wavecycles' are replaced.

The 'exaggeration' option just seems to add a surface buzz.

Musical applications

Modes 1 and 3 create quite vigorous forms of distortion. The other modes are more restrained, offering a variety of gently distorted versions of the original.

End of DISTORT REFORM
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT REPEAT – Timestretch soundfile by repeating 'wavecycles'

Usage

distort repeat infile outfile multiplier [-ccyclecnt] [-sskipcycles]

E.g.,
distort repeat inf outf 5 -c3 -s20

Parameters

infile – input soundfile to process, MONO only
outfile – soundfile output after processing
multiplier – number of times (integer) each 'wavecycle' (group) repeats
-ccyclecnt – number of 'wavecycles' (integer) in repeated groups
-sskipcycles – number of 'wavecyles' (integer) to skip at start of file
Multiplier and cyclecnt may vary over time.

Understanding the DISTORT REPEAT Process

The repetition of the 'wavecycles' stretches out the sound, making it both longer and more granular in texture. This granularity is increased if (increasingly larger) groups of cyclecnt 'wavecycles' are used: then the whole group repeats multiplier times.

Musical applications

DISTORT REPEAT produces long, grainy (distorted) sounds. The sense of stretching out the original is very apparent.

A significant application of DISTORT REPEAT is that, by increasing the cyclecnt factor, one crosses the pitch-perception boundary: that is, starting with a noisy sound in which all the wavecycles are randomly different, one ends up with, for example, 7 repetitions of the same wavecycle, followed by 7 of another and so on – and each of these comprise sufficient repeitions for us to hear pitch. Thus the noise source becomes a string of pitch beads, each of arbitrary timbre. With a cyclecnt of, for example, 128, one can even get a slowish random melody.

End of DISTORT REPEAT
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT REPLACE – The strongest 'wavecycle' in a cyclecnt group replaces the others

Usage

distort replace infile outfile cyclecnt [-sskipcycles]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
cyclecnt – (integer) size of group of 'wavecycles'
Cyclecnt may vary over time.
-sskipcycles – number of 'wavecyles' (integer) to skip at start of file

Understanding the DISTORT REPLACE Process

The replacing action serves to simplify the sound. Note that the single strong 'wavecycle' in the group will take the place of several others, which will be deleted. This simplification becomes extreme when the cyclecnt is high, leading to a 'sample-hold' kind of stepped effect. Time-varying cyclecnt makes it possible to introduce gradual change.

Musical applications

With DISTORT REPLACE we can achieve a simplification of the sound, up to very clear 'sample-hold' type stepped tones.

End of DISTORT REPLACE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT REPLIM – Timestretch by repeating 'wavecycles' (below a specified frequency)

Usage

distort replim infile outfile multiplier [-ccyclecnt] [-sskipcycles] [-fhilim]

Parameters

infile – input soundfile
outfile – output soundfile
multiplier – the number of times each wavecycle (group) repeats (Integer)
-ccyclecnt – the number of wavecycles in repeated groups
-sskipcycles – the number of wavecycles to skip at the beginning of the soundfile
-fhilim – the frequency below which cycles are counted

multiplier and cyclecnt may vary over time
NB: Works only on MONO soundfiles.

Understanding the DISTORT REPLIM Function

This function is like DISTORT REPEAT, but with a slight change. Here the length of wavecycle to be affected can be set. Thus, if you set a mid-range frequency, only those below that frequency will repeat, and the others (above the frequency) will be discarded (filtered out). Hence the name 'REP-LIM', meaning 'repeat (with a) limit'.

DISTORT REPLIM is therefore like a filtering program that also repeats wavecycles. In the DISTORT set, the wavecycles are wavelengths that occur between zero crossings, so distortion also occurs.

It is helpful to remember that wavelength is inversely proportional to frequency. Wavelength is the actual physical length of the oscillation, and frequency is the number of cycles that occur in one second (i.e., Hertz). These two aspects of sound are inversely proportional to one another: P = 1/f. For example, a sound oscillating at 100 Hz will have a period, i.e., a wavelength of 1/100 meters = 0.01 meters (0.39 inch). A sound oscillating at 1000Hz will have a wavelength of 1/1000 meters = 0.001 meters (0.039 inch).

Short wavecycles are therefore higher in pitch and long ones are lower in pitch. When the frequency setting for DISTORT REPLIM is high, the filter point is set higher and more of the sound will be retained. Here we are dealing with 'pseudo-wavecycles' (portions of soundfile between zero crossings), which is what introduces distortion into the equation.

Musical applications

The net result of the function is to create repetition distortion while filtering out a user-definable amount of the higher frequencies. Remember that the relative amounts of high and low frequencies in the infile will affect the results.

End of DISTORT REPLIM
Return to List of functions for interacting spectra at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT REVERSE – Cycle-reversal distortion in which the 'wavecycles' are reversed in groups

Usage

distort reverse infile outfile cyclecnt

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
cyclecnt – number of 'wavecycles' in a reversed group (Range: > 0)
Cyclecnt may vary over time.

Understanding the DISTORT REVERSE Process

Here the original soundfile is grouped into a series of 'wavecycles' with cyclecnt 'wavecycles' in each group. Then each of these groups of 'wavecycles' is reversed.

The term 'distortion' here is something of a misnomer, because no distortion process is applied to the 'wvecycles' themselves. Instead, cyclecnt sets the number of 'wavecycles' which are to be copied in reverse as a group to the outfile. For example, if cyclecnt = 3, 15 'wavecycles' reversed in groups of 3 will assume the order: 3-2-1, 6-5-4, 9-8-7, 12-11-10, 15-14-13. Thus, not only is the sound material backwards, but the reversed 1st 'wavecycle' is now adjacent to the reversed 6th 'wavecycle'.

This mimics the classical tape studio technique of cutting up a length of tape into segments (of varying lengths), reversing the segments, and joining up the reversed pieces.

The result will be similar to a random brassage because of the differing lengths of the 'wavecycles'.

The process moves steadily through the infile from beginning to end, so the normal order of the (reversed) events is preserved. It is surprising how normal the output can be. With mid-range values for cyclecnt (say, 30 to 100), one hears the original breaking up, but only with very large values for cyclecnt does one hear the sound sweeping backwards in large swathes. Again, it is a question of 'resolution': the size of the units being manipulated.

Musical applications

A small value for cyclecnt will produce a grainy result, mid-values a 'broken up' result, and large values swathes of reversed sound. If the value for cyclecnt exceeds the number of 'wavecycles' in the infile, you will be told that the "sound source is too short...". DISTORT CYCLECNT returns the number of 'wavecycles' in a sound, should you want to provide a value for cyclecnt which is right up to the limit.

Reversing the output of DISTORT REVERSE turns the cyclecnt groups back the other way while reading the whole soundfile from back to front, producing an interesting mixture of forwards and backwards!

Using the time-varying option for cyclecnt provides an opportunity for dramatic or gradual changes in the output.

End of DISTORT REVERSE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT SHUFFLE – Distortion by shuffling 'wavecycles'

Usage

distort shuffle infile outfile domain-image [-ccyclecnt] [-sskipcycles]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
domain – set of letters representing consecutive (groups of) 'wavecycles'
image – set of letters which forms some permutation of the domain set -ccyclecnt – the size of 'wavecycle' groups to process: each character in domain-image represents cyclecnt groups of 'wavecycles' (Default: 1)
Cyclecnt may vary over time.
-sskipcycles – number of 'wavecyles' (integer) to skip at start of file

Understanding the DISTORT SHUFFLE Process

A simple reordering in which domain and image have the same number of characters will suitably roughen up the sound. As the image duplicates characters, some time-stretching will occur.

Introducing higher cyclecnt values will mean that the infile is processed in larger units, increasing the recognisability of the original. Note that, in spite of the higher cyclecnt, time-stretching does not result – unless domain characters repeat in the image.

Thus, a domain-image of abc-cba would be:

3-2-1, 6-5-4 etc.
but with a cyclecnt of 5,
and the image c-b-a would now be:
11-12-13-14-15, 6-7-8-9-10, 1-2-3-4-526-27-28-29-30, 21-22-23-24-25, 16-17-18-19-20
Note how the cyclecnt 'wavecycles' proceed sequentially forward in the file, even though the image involves a reversal of the domain. This is what produces the increased recognisability.

Musical applications

The possibilities focus here on sculpting the roughness of the distortion along with time-stretch factors. Lots of room for playing with the image shapes.

End of DISTORT SHUFFLE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


DISTORT TELESCOPE – Time-contract sound by telescoping N wavecycles into 1

Usage

distort telescope infile outfile cyclecnt [-sskipcycles] [-a]

Parameters

infile – input soundfile (Mono only)
outfile – output soundfile
cyclecnt – the number of 'wavecycles' in a group
Cyclecnt may vary over time.
-sskipcycles – number of 'wavecyles' (integer) to skip at start of file
-a – telescope to an average 'wavecycle' length (Default: telescope to the longest 'wavecycle' length)

Understanding the DISTORT TELESCOPE Process

Although at first rather like DISTORT OMIT, here the 'wavecycles' are not deleted as such. Instead, they are superimposed (i.e., mixed) onto each other, with shorter 'wavecycles' being stretched to fit the longest one in each group of cyclecnt 'wavecycles'. The outfile will usually be much shorter than the infile and can be reduced to a mere blip with this process.

The -a flag tells the program to telescope to the average 'wavecycle' length, rather than to the longest. Since the longest 'wavecycle' in each group is compressed by this method, the outfile will be even shorter.

Musical applications

Interesting results can be achieved with small values for cyclecnt, the output tending to have a 'mushy' quality. It responds well to pitched material, producing a singing, if mushy, tone.

End of DISTORT TELESCOPE
Return to list of DISTORT functions at top of this file
Return to Main Index for the CDP System.
Return to Groucho Index


Technical description of a 'Pseudo-wavecycle'

A pseudo-wavecyle is a way of dividing up the whole signal by taking chunks which stretch from one zero-crossing, through a second to a third. The reason these divisions of the signal are called 'pseudo' is because these segments of the waveform do not necessarily correspond to real wavecycles.

For example, a possible true wavecycle (corresponding to the fundamental of a pitch) of a sound might cross the zero more than twice, as in Figure 1. But this divides into two pseudo-wavecycles, as in Figure 2. Note that each of these pseudo-wavecycles crosses the zero at three points.

[Figure 1 shows a sine-like waveform 
with 5 crossings:  starting at zero, it goes up (big), down (small), 
up (small), down (big) and ends by coming back up to zero.  In Figure 2 
this waveform is broken at its center into 2 separate waveforms, each 
with 3 crossings]

For more technical discussion of these processes, see Richard Dobson's
Introduction to the T Wishart DISTORT Functions

Return to Main Index for the CDP System.
Return to Groucho Index



Last Updated: 26 February 2005
Documentation: Archer Endrich
All observations & ideas for improvement appreciated
Composers Desktop Project
12 Goodwood Way
Cepen Park South
Chippenham, Wiltshire
SN14 0SY ENGLAND
Tel. +44 (0)1249 461361
Email: archer@trans4um.demon.co.uk © Copyright 1998-2005 Archer Endrich & CDP