The CDP system is one of the most comprehensive and innovative sound design suites available. Written largely by English electro-acoustic composer Trevor Wishart and reflecting his musical aesthetics in many ways, its processes cover almost every aspect of sound manipulation you've ever heard of, plus many that will be unfamiliar, and usually from an original or compositional viewpoint.

CDP has over 430 processes covering EDIT-MIX functions, SOUNDFILE processes (time domain), SPECTRAL and PITCH processes, a small but significant SYNTH group, DATA GENERATING functions and a large INFO section. In addition there are over 100 DATA massaging functions and an extensive HELP.


Soundfile functions operate in the time domain, that is, they process the sound waveform, which is a representation of sound as amplitude against time:


Soundshaper divides soundfile processes into the following categories:

(Editing and Mixing functions are in a separate group: see EDIT-MIX PROCESSES.)

The envelope and filter categories will be familiar to synth players, while pitch functions are mostly speed-changing operations. The other categories all involve making copies of (parts of) sounds, or segmentation – as in the grain, rhythm and distort categories.


The 'envelope' is the overall loudness contour of a sound: in CDP, it is the the actual time-varying level, rather than a simple percentage gain control. You can extract an envelope (either as a binary or breakpoint* text file) and edit it visually or transform it in over 30 different ways. Envelope functions alter the dynamic shape, creating fades and swells, warping the envelope in many ways, or totally re-drawing it, creating new envelopes, and imposing or replacing the envelope of one sound with that of another. The transformed data can also be applied to scores of time-varying parameters throughout the CDP system.

Most envelope functions use a parameter called window-size. This is the time-period used to measure the amplitude successively and it determines how accurately the envelope is defined: a small window-size gives a precisely defined envelope; with a larger one, amplitude values are averaged over a longer time.

*Breakpoint text files are lists of time value pairs. Envelope values use a gain scale of 0-1.


  • EnvCreate creates a binary envelope file (.evl) or a breakpoint envelope file.
    The data can be edited in Soundshaper's Graph-Edit.

  • EnvShape: create or edit an existing breakpoint envelope in Graph-Edit, e.g. you can create an envelope to be imposed on a soundfile.

  • Cyclic creates an envelope file of a cyclic nature (e.g. for EnvReplace or Tremolo). Any user-defined envelope shape can be used for the cyclic "cell".

  • EnvExtract/B extract the envelope from a soundfile, as a binary envelope file or a breakpoint file of time amp [0-1]. Soundshaper can extract the envelope automatically, using current settings. CDP's BrkEdit editor also has a data-reduction facility. EnvAnal extracts the envelope from a spectral analysis file.
  • Env1
    Detailed envelope breakpoint file.
    Data-reduced envelope breakpoint file.
    (The broken yellow lines are a product of image reduction.)

  • PeakEnv isolates peaks in the soundfile and outputs an envelope based around these peaks. A typical output from a drum sound:

  • Peak Envelope

  • EnvToBrk/BrkToEnv: EnvToBrk converts a binary envelope file (.evl) to breakpoint (.brk). Data-reduction may then be applied using BrkEdit, if required. BrkToEnv converts the other way. (Breakpoint files may expressed in dB or amplitude values from 0 to 1.)


  • EnvImpose superimposes the envelope of one sound onto another. Imposing an envelope is akin to a traditional envelope-follower, which takes an audio input and converts it into a control voltage that may be applied to another sound. A variant EnvScaled timescales the imposed envelope first to match the length of the target sound.

  • EnvReplace replaces the envelope of one sound with that of another.

  • Fades/Curtail/ExpDecay: Fades [CDP: dovetail] applies fade-in and/or out to a sound, which is useful prior to mixing. Curtail creates a fade-out, similar to Fades but with wider choices, e.g. a gradual or steeper decay slope. ExpDecay complements Fades and Curtail by offering a simple exponential fade-out with a defined start and end time.

  • Attack: emphasise the amplitude at a particular point, which need not be at the start of the sound.

  • Swell: create a rising and falling envelope shape, peaking at any specified point in the file – it may or may not be an existing peak – and the swell shape is pre-defined, with either a linear (steeper) or exponential (more gradual) shape.

  • Tremolo/Shudder/Pulsed: three similar functions, each producing a cyclic amplitude variation. Tremolo (rev'd CDP7) uses a built-in Low-Frequency Oscillator (LFO), set in the traditional manner by size (depth) and rate (frequency). CDP7 adds a width parameter. Shudder allows for random variation of the oscillation. Pulsed offers the greatest control: breakpoint files set an an envelope shape for the impulse and any pitch transposition within it; you set the start and end times of the effect, and can randomise the pitch, onset-time and amplitude from impulse to impulse.

  • Flutter produces a tremolo effect across multi-channel space: on each cycle, different output channels fluctuate in loudness so that the tremolo effect moves rapidly from one set of channels to another.

  • EnvWarp: a suite of 15 functions that alter the envelope shape for use with soundfiles, envelope files or breakpoint files: attenuate, exaggerate, flatten, lift, normalise, reverse, timestretch, ceiling (raise whole envelope to max.), corrugate (tightens envelope peaks by reducing troughs to zero), ducked, expand, gate, inverse, limit, trigger (create sudden on-bursts triggered by rise-rate).


Filtering changes the tone-colour of a sound, removing some of the harmonics and emphasizing others. The filter's power is well known through the classic "subtractive synthesis" model in which a synthesised waveform, rich in harmonics, is shaped by a time-varying filter. The classic filter types are:

  • Low-pass: cut off top frequencies
  • High-pass: cut off bottom frequencies
  • Band-pass: a mixture of Low and High which preserves a frequency band; and hence Notch, in which a band is rejected
  • All-pass: all frequencies are let through but with changed phase relationships

CDP has all the classic types plus particularly effective Filter Banks (c.f. Graphic EQ), which can be used to "tune" the sound by strongly emphasising certain frequencies over others. There are also spectrally based filters (see Spectral Processes).


  • FltFixed implements the standard filter types: High-Pass, Low-Pass and Band-Pass, using a single fixed frequency (not time-variable) to determine the cutoff point for High/Low pass and the centre frequency of the band in Band-Pass mode. The sharpness of the amplitude roll-off ('Q') is also fixed.

  • LoHi is a simple Low/High pass filter, which is capable of very tight 'brickwall' filtering. Given a cutoff frequency (where filtering begins) and a stopband (the frequency of full attenuation) the program computes and applies the necessary order of filtering to achieve this.

  • FltVari has standard High-pass/Low-pass/Band-pass/Band-reject modes, with time-variable cutoff frequency and Q (sharpness of the pass band).

  • FltIterate: a filterbank with echo (c.f. Iterate).

  • Phasing: the classic "phasing" effect is a product of wave-cancellation, as a waveform with time-varying delay is mixed with the original and different frequencies become prominent or drop out in turn.

  • Sweeping: an oscillator sweeps across the frequency spectrum, and with a tight filter band the sweeping filter picks out the component partials in a sound in turn. This version has High, Low, Bandpass/Band-reject modes and time-varying Q to emphasise the effect.


  • Bank implements a filter bank (i.e. bank of band-pass filters, or Graphic EQ). The centre frequencies of the bands are based on harmonics, subharmonics, harmonics plus offset, or equal intervals; or they can be set randomly. The bandwidth (Q: higher Q =narrower band) is time-variable; if Q is set high, you can easily focus on a 'tuned' sound.

  • Userbank: a filter bank in which the bands are defined by pairs of frequency/MIDI-pitch and amplitude. The bandwidth ('Q') is time-variable, but freq/pitch and ampltude are fixed. The frequencies and amplitudes can be set in Graph-Edit, which has a number of presets for the purpose.

  • Varibank/2: is a versatile tool for 'tuning' a sound to a given chord. Sets of filter frequencies/MIDI-pitches and amplitudes can change over specified time-periods. A number of harmonics of the central frequency can be included as extra filters and the bandwidth is also time-variable. In Varibank 2 (Partials), the partials (possibly inharmonic) and their amplitudes can be specified, also time-varying.

  • VFilters and Filtrage: two functions generating filter data files for Varibank; Filtrage produces randomised frequencies within user-limits.


Most processes here change the speed of the sound, which also changes its pitch (and time). Quite different are the two modulation processes RingMod and CrossMod, which can radically change the frequency content. Even more radical transformation is possible in the spectral domain, and in the functions which process pitch extracted from spectral files (see Spectral Processes).

  • Speed changes the speed of playback, which transposes the pitch: a faster speed raises the pitch and shortens the duration, while a slower speed lowers the pitch and lengthens the duration. Transposition is by number of semitones or by ratio and both are time-variable.

  • Accel changes speed by accelerating (raising pitch) or decelerating (lowering pitch).

  • Vibrato raises and lowers (modulates) the speed under the control of a low-frequency oscillation, using the classic controls of modulation rate (frequency), and width of transposition. Both are time-variable.

  • Stack superimposes transposed copies of the sound to make a chord. Transpositions are by speed, so vary in length, but you can stop the process early and there is an optional off-set to help synchronize attacks.

  • Scrub attempts to simulate the sound of tape moved by hand across a tape-head, producing wild glissando efffects.

  • Ringmod: ring-modulation is a classic effect in which all frequencies in a sound are multiplied by a modulating frequency, usually producing a metallic effect in which the timbre varies as the original sound's pitch changes.

  • Crossmod modulates one sound with another (which can be itself). Each frequency component of File2 modulates each of those in File1, resulting in a complex mix.

  • Degrade reduces the sample rate, possibly lowering the pitch, and/or lowers the bit-resolution, which reduces the precision of the data, making the material sound coarser. For example, it can reduce speech to not much more than the rhythm and pitch contour, especially in conjunction with Blur.


Reverberation consists of short echoes within an enclosed space. Reverb and Roomverb implement classic reverb. algorithms, while convolution uses impulse files or soundfiles to mimic any acoustic space. Delay lines similarly produce echoes and there is a wide range of functions covering every aspect of delay and echo. Loop is particularly important as an introduction to segmentation and grain processes.

  • Reverb / Roomverb / Roomresp: Reverb and Roomverb are comprehensive reverberation functions, incorporating such features as reverberation time, dry/wet mix, absorption (high-frequency damping) and early reflections: the programs use built-in sets for small, medium and large rooms, but these can be optionally entered in a datafile created by the separate Roomresp program. There is also optional filtering, optional pre-delay (which time-shifts the early reflections to give the effect of a bigger room), and multi-channel output.

  • Convolve (CDP: fastconv) is an FFT-based convolver. Its primary application is convolution-based reverberation, using a sampled impulse response of a building or other responsive space. (Many suitable impulse-response files are available on the Internet.) More experimentally, the impulse-response input can be any soundfile. Convolution can also implement an FIR linear-phase filter.

  • Delay implements a classic delay line, with fixed and modulated delay times. The delayed sound can be fed back and mixed with the original to give a series of echoes. The delay time can be varied by a low-frequency oscillator (LFO), with its own controls for speed and depth of change. The delay time can also be set by a pseudo-MIDI pitch (CDP: newdelay), corresponding to the resonant pitch that occurs with mutiple feedback.

  • Tapdelay is a delay line with user-selected delay times (taps). In a standard delay line the ouput is taken at the end, whereas in a tapped delay line, extra outputs are also taken at intermediate points.

  • Echo produces stereo echoes with a specified delay time and number of echoes, within a given degree of roll-off (amplitude decay). The function can be very useful for creating a fake stereo signal (or chorus effect) from a mono signal, with tiny delays being scattered randomly in stereo space, as they might be in a hall. MchEcho is a variant of Echo in which mono or stereo input is echoed across multi-channel space.

  • Iterate produces multiple repetitions, with the options of randomizing the delay time and varying pitch and amplitude on each repeat. You can choose either an outfile length, or an exact number of repeats. MchIter is idential to Iterate, but scatters output across multi-channel space.
  • Iterline is a variant of Iterate, in which the repetitions follow a "transposition line" of time-transposition pairs

  • Freezedelay (CDP: extend freeze) is a variant of Iterate, repeating a segment (or the whole sound) to produce a freezing or chorus effect. The delay time between repeats and the pitch of the iterations can be randomized; both of these are required for a chorus effect.

  • Loop: a segment is looped round and round, either a set number of times or enough to create a sound of a required length. The segments do not overlap but are laid end-to-end. A key optional parameter is STEP, which moves the loop start-point forward through the sound. If the segment is small (within 100 ms) and the step-time is also short (<20 ms), the result is a simple time-stretching. The step-time creates a resonance at the frequency of the delay, but this can be varied to create a less focussed resonance.

  • Repetitions repeats the whole sound at the times specified in a datafile; the playings overlap if the next start time occurs before the end of a previous playing. For short sounds (e.g. percussion), this process is a quick way of repeating the sound with a precisely timed rhythm.

  • MchRepeats (CDP: madrid) repeats one or more sounds and outputs these to multi-channel space. Internally, the function produces several spatially distinct sound streams, each of which has the same time-delay and order of sounds. Some repetitions are then randomly deleted to give a sense of spatial syncopation.

  • Polyrhythms (CDP: ceracu) repeats sounds at different times in different channels, creating musical polyrhythms such as 2 against 3. Very complex polyrhythms can easily be created (e.g. 11:13:17).

  • Shifter sets up a number of polyrhythmic streams like Polyrhythms, but the repetition-times shift so that the streams will re-synchronise after a specified number of cycles.


Segmenting and restructuring sounds is a strong feature of CDP. The sound is chopped up or re-ordered in many different ways, ranging from simple reversing to stepping looped segments through the sound, zig-zagging back and forth, and shredding (random segmentation). Processes include:

  • Reverse (CDP: modify radical) reverses the soundfile so that it plays backwards. This can be used in conjunction with other reversing procedures, like GrnReverse or GrnEnv_Reverse (reverses grains), CycReverse (reverses pseudo-wavecycles), EnvWarp_Reverse (reverses envelope): none of these reverses the sound itself, but rather the internal events or amplitude. Applying Reverse to their result produces forward-facing events within a reversed soundfile.

  • BaktoBak splices a reversed copy of the soundfile on to and before the original. For many sounds this will give a peak in the middle, unless they have been reversed first.

  • Repeats (CDP: extend doublets) provides a simple kind of repetition, dividing the sound into segments and repeating each a given number of times, in turn (e.g. AAABBBCCC). If the segment length is small enough, the process provides a simple form of time-stretching.

  • Drunk takes a 'drunken walk' through the soundfile, reading segments and splicing them together. Segments are read forwards and begin from within a range ('ambitus') around a given start-time ('locus'), which remains static or can move through the soundfile. Once a segment is read, the program moves randomly to a new position in either direction, within the range, from where it reads the next segment. The segment size is determined by a clock rate, a slower clock producing longer segments.

  • Scramble: like Drunk, segments are chosen at random and joined end-to-end. Segments are selected from a wide variety of locations in the soundfile, jumping back and forth a great deal, hence "scrambling" the sound. The size of the segments is chosen randomly within user-set limits.

  • Shred randomly cuts and splices repeatedly, within the existing file-length. The sound is cut into random segments, but retains its original duration. The segments are re-ordered by a permutation process, which is repeated so that the sound gets more and more jumbled, literally 'reducing it to shreds'.
  • MchShred is a multi-channel version of Shred, with the segments scattered across the available output channels.

  • Zigzag plays portions of the soundfile alternately forwards and backwards; Zigzag is a good way of extending a sound (especially percussive ones). Short forwards and backwards movements create a stuttering or repeated note effect.
  • MchZig is a multi-channel version of Zigzag: output is sent to a new channel at each 'zig' or 'zag'. MchZig is one of a number of multi-channel functions in which the signal is partitioned into channel-streams. The partitions themselves may have musical uses if the channels are then split. (Others include MchIter, MchShred, MchGrain, TexMChan and MchEcho.)

  • Hover is like Zigzag, but hovers around a given location at a given modulation frequency. (The degree of variation of both can be randomized.) The width of the sample read is set by the frequency.

  • Fracture cuts enveloped segments and disperses these in multi-channel space.


The Grain process extends the principles in Loop to create either thickly textured sounds out of overlaid segments, or separately segmented sounds.

The other Grain functions manipulate the grains in 'grainy' sounds – i.e. sounds with silences separating the segments/grains. Grains can be treated in many ways, e.g. duplicated, omitted, repitched, reversed in order.

  • Grain (CDP: modify brassage/sausage) is similar to the delay functions, especially Loop. The soundfile is segmented and the repeated segments (grains) can overlap in time, giving thick textures. You can also timestretch/shrink the sound and change the pitch. In "SAUSAGE" mode the process cycles round several input soundfiles.
  • MchGrain (CDP: wrappage) is the same as Grain, except that the output is distributed over a given number of channels.

  • Graintex (CDP: newtex) is a variant of Grain with aspects of Drunk, creating a time-varying texture in multi-channel space with segments cut from a source sound or sounds.

  • Granulate creates inter-grain silences, to create 'grainy' sounds for processing in the Grain functions. Any sound with gaps of minimum 32msecs can be regarded as a 'grainy' sound. Alternatively Gate, SpecGate or EnvLevel/Gate can produce inter-grain silences, and Masks and Silences can also create silent gaps.


  • GrnAssess, GrnFind, GrnCount and GrnTimes provide information about grains in a sound and suitable settings for grain-function parameters.
  • GrnAlign attempts to align grains in two soundfiles.
  • GrnDupl duplicates the grains found in a grainy sound, repeating each the specified number of times, in turn.
  • GrnPitch transposes the pitch of grains.
  • GrnRhythm changes the duration of grains.
  • GrnMotif changes the pitch and duration of grains.
  • GrnShuffle (CDP: grain reorder) changes the order of grains by shuffling, using a text shuffle code.
  • GrnReverse reverses the order of grains without reversing the grains themselves.
  • GrnPosn changes the grain onset times to those in a datafile.
  • GrnOmit keeps a specified number of grains out of a set, eg. 3 out of every 5.
  • GrnTimewarp timestretches or shrinks by expanding or shrinking the gaps between grains.
  • GrnExtend (CDP: grainex) extends an area containing grains (such as a rolling "r" sound), the start and end search times being set by the user. The grains are found by envelope troughs and zero-crossings.
  • GrnEnv (CDP: grain grev): a number of functions manipulating grains found automatically by envelope troughs and zero-crossings. Several of the above functions are included as modes: Reverse, Repeat, Delete, Omit, Timestretch, and Put-grains (= position).


PSOW is a set of experimental grain processes for vocal sounds (only), allowing manipulation of formants independently of pitch, often with unexpected results. It attempts to segment the sound according to grains it finds that might correspond to FOFs, and then process these grains. FOFs (from the French 'Forme d'Onde Formantique'), are formant waveforms – grains – used to synthesise the singing voice. PSOW processes require a pitch-trace from a spectral analysis file, which Soundshaper does automatically.

  • PSLocate finds the start of the pitch-synchronous grain nearest to the specified time.

  • PSCut cuts the file at a specified pitch-synchronized grain.

  • PSChop extracts separate files, based on pitch-synchronised grains.

  • PSStretch timestretches/shrinks a sound by repositioning the pitch-synchronized grains. The grains themselves are not time-stretched. The process time-stretches the sound and changes the pitch (like SPEED) but preserves the vowel formants.
  • PSStrTrans (stretch-transposition) is similar to PSStretch: the process timestretches a sound, without changing vowels. Each FOF is individually repeated. The pitch can also be independently transposed without changing the vowels.

  • PSDupl timestretches by repeating the (groups of) grains in a segment, a low number of grains in each segment giving a smoother result.

  • PSDelete timeshrinks a vocal sound by deleting pitch-synchronized grains, retaining one in so-many out of a specified segment length.

  • PSFeatures imposes a selection of features on pitch-synchronized grains in a vocal sound, or modifies the grains themselves. Among the options are: transposition which does not change the timeframe of the sound but may introduce octaviation or other double-pitch features; transposing the spectrum above the fundamental (which itself doesn't change); a HOARSENESS parameter; generating subharmonics of the fundamental; and stretching the grains, but not the sound itself.

  • PSSustain freezes & sustains a (vocal) sound on a specified pitch-synchronized grain. Either a single grain, or a segment of multiple grains, is expanded.
  • PSSustain2 is a variant of PSSustain; here the user gives the start and end times for the chunk to be frozen. Longer durations may produce clearly repeated chunks, e.g. groups of words.

  • PSPartials (CDP: psow reinforce) attempts to reinforces partials in a (vocal) sound by overlaying pitch-synchronized grains that are harmonics or inharmonic partials of the fundamental pitch. There is also the option of sustaining partials.

  • PSSpace splits alternate pitch-synchronized grains into separate sound-streams, and distributes these spatially. For two streams, each at half the original pitch, the pitch drops by an octave, yet the output sound is not longer. A SUBHARMONIC parameter drops the pitch further, dividing the frequency by 3,4,5,etc.

  • PSSplit splits vocal pitch-synchronized grains into subharmonic and upwardly transposed pitch. The pitch is transposed up without changing the timeframe or the vowels; the process also adds a subharmonic frequency, and there is a balance control between these two.

  • PSGrab grabs a pitch-synchronized grain or segment (optionally repeating it). The function is used to extract two grains to be interpolated by PSInterp.

  • PSInterp interpolates between two pitch-synchronous grains: both extracted from different files using PSGrab (although they could actually be from different points in the same file). The key parameter is the length of interpolation between the two grains; either the start or end grain can be sustained and vibrato and tremolo can also be added.

  • PSImpose attempts to impose pitch-synchronized grains from one soundfile onto another.

  • PSInterleave interleaves (groups of) pitch-synchronous grains, from two soundfiles.

  • PSReplace combines the pitch-synchronous grains (FOFs) of the first sound with the pitch of the second.

  • PSSynth is an experimental program which attempts to impose a stream of pitch-synchronized grains on a synthesized sound. The grains are taken from the input sound, while the synthesised sound can be specified using a variety of datafile formats.


The TEXTURE suite is based on algorithmic repetition and lies somewhere between a sophisticated arpeggiator and a fully-fledged algorithmic composer. TEXTURE processes repeat and transpose the input sound(s) in various ways to create a texture of events ('notes'). The events are whole sounds (which may or may not be played to the end), but the user can easily edit one or more sounds to provide segmented events for the processes.

'Notes' can be treated as simple repetitions, or repeated in groups, or with a timed rhythm, or as transposed ornaments or fully-defined motifs (timed and transposed). Key parameter values such as pitch, duration, gain (level), spatialisation and sound number are generally chosen randomly from within a specified time-variable range (which can also be a fixed value).

In each of the eight main functions, repetitions can be pitched at random within the defined pitch range, or restricted to a user-defined pitch-set or "harmonic-field" (which octave-transposes the pitches); the set/field can be time-varying. More than one input sound can optionally be used, and the range of sounds chosen can be time-varied.

It is not easy to grasp the differences between the Texture programs, and the suite is best explored at first using a simple note sample or similar short sound. CDP supplies two sets of tutorial examples for this purpose.

  • Simple: single 'note' events are repeated at regular intervals. Loudness, duration and pitch are selected randomly from the specified ranges, though pitch can be restricted to a pitch set/field.

  • TexMchan is a variant of Simple, catering for multi-channel output, with parameters to set the pan-position of events in m-c space. The input is natively mono, but Soundshaper can handle stereo or m-c input: the channels are treated separately and the outputs mixed after processing; different parameter sets can be used for each channel.

  • Groups [CDP: grouped]: 'note'-events are repeated in groups. Various parameters control the timing, pitch and durations within the group, while others control the relationship between the groups. As always, pitch can be restricted to a pitch set/field.

  • Timed is a variant of Simple: 'note'-events are repeated following a given rhythmic motif, with pitches selected at random from a pitch range or a specified pitch set/field.

  • Tgroups (Timed Groups) is a variant of Groups: events within each group are shaped as in Groups, but the onset times of each group are determined by a timed rhythmic motif (instead of by Group's PACKING parameter). Pitches are selected randomly from within the pitch range or can be restricted to a defined pitch set/field.

  • Motifs uses a fully-defined motif, with pitch, amplitude and duration values (somewhat like a figure in a Baroque sequence). The starting pitch of the motif-group is chosen randomly from within the pitch range, or from the defined pitch set/field, and the other notes of the motif are transposed exactly. The total duration (tempo) of the motif can be scaled up or down.
  • HmcMotifs is a variant of Motifs: all output notes are constrained by the defined pitch set/field. If a pitch in a transposed motif is not in the pitch set/field, it is changed to the nearest member of the set/field.

  • TMotifs (Timed Motifs): fully defined motifs (with pitch, amplitude and duration values) begin at the times specified in a timed rhythm. The rhythm controls the onsets of the motif-groups, as in TGroups. The starting pitch of each motif-group is chosen randomly within an overall range, or is restricted to the pitches specified in the pitch set/field.

  • THmcMotifs is a variant of TMotifs and HmcMotifs: all output notes are constrained by the defined pitch set/field. If a pitch in a transposed motif is not in the pitch set/field, it is changed to the nearest member of the set/field. TMotifs and THmcMotifs are the most defined and least randomized of the Texture functions.

  • Decorate: groups of notes decorate each pitch of a basic 'line', rather as a figure such as a turn might elaborate each note of a scale, arpeggio or other pitch sequence. The notelist 'line' is a timed motif. Pitches are chosen randomly either from the pitch range, or from a given pitch set/field, and may be placed above, below or centred on the pitch of the basic note, or combinations of these (e.g. centred and above, etc.). PreDecor and PostDecor are variants - the decorations are connected to the line: centred (Decorate), before and ending on (PreDecor), and starting precisely on the line's time points (PostDecor).

  • Ornate is like Decorate, but here the ornaments are fully-defined motifs (with pitch, amplitude and duration values). The notelist 'line' is again a timed motif. As in Motifs, the total duration (tempo) of the ornament motif can be scaled up or down. PreOrnate and PostOrnate are variants - the ornaments are connected to the line: centred (Ornate), before and ending on (PreOrnate), and starting precisely on the line's time points (PostOrnate).


The RETIME program deals with the retiming of amplitude peaks or silence-separated events. As a producer of experimental retimings of events, it has potential, but is less successful at emulating commercial "beat-slicing" functions. There are three divisions: functions that create or retime silences, those that retime amplitude peaks, and those that retime silence-separated events.


  • Silences (also in Edit/Mix menu) inserts silences at given times. (This function can be used in conjunction with Info > GatedOnsets to produce silence-separated events.)

  • Constrict shortens zero-level sections in a sound. The only parameter sets the amount of constriction, where a higher value shortens the silences more.

    Other silence-producing functions include Gate, EnvLevel/Gate and Corrugate, Masks, and Granulate. Also relevant is PeakEnv, which isolates peaks in the soundfile and outputs an envelope based around these peaks; this envelope can be applied to the original sound using EnvImpose.


  • PeakFind (INFO menu) reports the times of peaks it finds in a soundfile; the key parameter is THRESHOLD, the level below which peaks are ignored in any time-window. The report is to a textfile (peaktimes.txt), which is used in some RETIME processes.

  • PeakPulse retimes events at regular times, based on tempo or beat-duration. The peaks are taken from a datafile peaktimes.txt, as output by PeakFind.

  • PeakRetime retimes events, designated in a peaktimes file, to new times. To construct the appropriate datafile, a second column is added to the peaktimes list, giving the new time for the peak. Tempo is also adjustable.

  • PeakMove adjusts the sound in relation to a single peak, specified by the user, to a new position to which the peak is moved by inserting or deleting silence at the start.

  • PeakChop gates the sound around peaks and adjusts the playback tempo.


  • R-Shorten shortens event lengths in a soundfile containing silences. The user specifies a minumum event duration in the Infile, shorter events being ignored, and an equivalent duration of output events.

  • R-Pulse outputs silence-separated events at regular times, according to a user-specified tempo.

  • R-Speed changes the tempo of silence-separated events. The speed is time-variable.

  • R-Times repositions silence-separated events at new specified times or at specified beats at a given tempo.

  • R-Repeat repeats a single silence-separated event within a sound, the event occurring at a time specified by the user. The repeats are made at a specified tempo. The process works well provided the event is clearly preceded and followed by silence and the time is accurate: PeakEnv can help to find event times.

  • R-Mask masks one or more silence-separated events using a pattern of 0 (silent) and 1 (sound). This function is also an easy way of separating granulated sounds into separate streams.

  • R-Accents accentuates one in every N events by retaining the level of the accented events and reducing the others to a user-specified level.


The DISTORT suite is a variant of the grain concept, but the segments are pseudo-wavecycles (called wavesets) found in zero-crossings, used to produce a wide variety of distortion. The wavesets are processed by repetition, omission, replacing waveforms, adding "harmonics", and so on. Cycles can be processed singly or in groups. Many processes do produce distortion with small groups of cycles, because of rapid and uneven changes of waveform, but larger groups produce smoother and often unpredictable results.

  • CycCount (INFO menu): find and count wavesets (pseudo-wavecycles) in a soundfile.

  • CycAverage averages the waveshape over a number of cycles. In a melodic passage, this averages the melody too, creating an unpredictable sequence of pitches, which could be analysed (see pitch data section) and applied to other processes.

  • CycOmit omits a proportion of cycles out of a specified group size and substitutes silence. A small group size lowers the pitch in a gritty way; a larger one audibly granulates the sound.

  • CycMultiply / CycDivide: cycles are duplicated so as to raise or lower the frequency by a proportion. These are not really transposition functions, though, unless the source waveform is very uniform.

  • CycDelete time-shrinks the sound in an unusual way, with distortion.

  • CycFilter: the "filter" idea is to delete cycles whose wavelength corresponds to a frequency in the chosen band. As cycles are rarely full waveforms, the result is usually another kind of grittiness, rather than a traditional filtering effect.

  • CycInterp (CDP: distort interpolate) repeats each cycle a given number of times and interpolates between them; rather than being a simple time-stretching function, though, this produces a seriously "wierd" output.

  • CycRepeat repeats (groups of) cycles the specified number of times. Mode 1 (CDP: distort repeat) duplicates and timestretches; Mode 2 (CDP: distort repeat2) duplicates without timestretching; Mode 3 (CDP: distort replim) duplicates cycles below a specified frequency limit (and timestretches).

  • CycReplace: the strongest cycle in the group replaces all the others: again this creates "random" melodies, even with large groups.

  • CycTelescope: another timeshrinking procedure, retaining 1 in every group. Even a group of 2 will halve the sound in a gritty way.

  • CycFractals and CycHarmonics both add higher-frequency components to the sound. With CycFractals, these are based on miniature copies of the waveform grafted on to itself. With CycHarmonics, the added waveforms are multiples of the original, using a datafile of harmonic_number amplitude pairs.

  • CycEnvelope imposes an envelope (which can be user-defined) on groups of cycles. With large groups (e.g. >100) this gives an audible amplitude modulation. With small groups, the modulation creates its own resonance, giving a distorted sound.

  • CycInterl / CycImpose: CycInterl merges cycles from two sounds, while CycImpose imposes the cycles of one sound on another. Both give distortion. The latter is somewhat like a time-domain vocoder, but without the subtlety.

  • CycOverload: the idea is that the top of the waveform is clipped and optionally replaced with another frequency. This adds "bite" or obvious distortion to the sound.

  • CycPitchwarp: cycles are transposed randomly within a specified range – unless this is small, the effect is similar to an extreme vibrato. With a small range it introduces a randomised pitch variation, which can sometimes be very useful, and if the group size is large there is a noticeable "stepping" effect.

  • CycReform substitutes simple waveforms (sine, square etc.) for the pseudo-wavecycles.

  • CycReverse reverses each cycle or group of cycles. Large groups give bigger reversed sections and less distortion.

  • CycShuffle (c.f. Shuffle and GrnShuffle): a "domain" and "image" pattern dictate the shuffling of (groups of) cycles.


The categories and function names are those used in Soundshaper. CDP program groups and names may be different.
The descriptions here are adapted from the Soundshaper manual and do not necessarily reflect the views of CDP Ltd.
For further details about CDP see the Composers' Desktop Project website.