![]() |
|
![]() |
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:
ENVELOPE, FILTER, PITCH, REVERB/ECHO, EXTEND/SEGMENT, GRAIN, PITCH-SYNC GRAINS, TEXTURE, RHYTHM and DISTORT.
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.
ENVELOPE
The 'envelope' is the overall loudness contour of a sound: taking an average of the absolute amplitude (ignoring negative values) over an extended period (as little as 5ms) extracts the sound's time-varying level, or dynamic shape. You can extract an envelope either in a binary form (.evl) or as a breakpoint* text file(.env / .brk), 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.
CREATE / EXTRACT / CONVERT
- EnvCreate creates a binary envelope file (.evl) or a breakpoint envelope file.
The data can be edited in Soundshaper's Graph-Edit, with the output sent to the Patchgrid as a new source.
- EnvShape: create or edit an existing breakpoint envelope in Graph-Edit. The input is either a .brk/ .env file, or a soundfile for which an equivalent .brk /.env file exists in the same folder. If no such file exists, a blank graph appears, set up with the length of the soundfile and having the correct amplitude scale of 0-1. This is useful for creating an envelope which will replace or be imposed on the soundfile. Output is by default to [soundfile].brk.
- 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 (particularly for use with Make2). Note that this is not the same as the Spectral Envelope.
![]()
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:
![]()
- 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.)
ENVELOPE PROCESSES
- EnvImpose superimposes the envelope of one sound onto another. EnvEImpose and EnvBImpose similarly impose an already-extracted envelope (.evl or .env/.brk, respectively). 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. The replacement envelope comes from Infile 2. EnvEReplace and EnvBReplace similarly employ an already-extracted envelope as the replacement (.evl or .env/.brk, respectively). There are no parameters for either function.
- Fades [CDP: dovetail] applies fade-in and/or out to a sound, which is useful prior to mixing. You can view original envelope in Graph-Edit to get a visual display to set times for this operation.
- Curtail creates a fade-out; it is similar to FADES but has wider choices, e.g. the choice of a gradual (Modes 1-3) or steeper decay slope (Modes 4-6). You can set the fade start and end times, or fade start and duration, or fade to the end of the file. The fade may occur earlier than the end of the soundfile.
- ExpDecay complements FADES and CURTAIL by offering a simple exponential fade-out with a defined start and end time. This is probably easier to use than the other functions.
- 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. (Shudder is currently in the Xtra menu, as it is not fully compatible with Soundshaper patches.)
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 (EnvEWarp/ELevel, CDP: reshape) or breakpoint files (EnvBWarp/BLevel, CDP: replot).
Attenuate reduces the overall amplitude of the envelope (opposite of Lift).
Exaggerate emphasises or de-emphasises the envelope shape (opposite of Flatten).
Flatten evens out the envelope contour (opposite of Exaggerate) smoothing it by averaging over a segment of so-many envelope windows (the segment is stepped through the file).
Lift raises the envelope by a set amount (opposite of Attenuate).
Normalise is a standard normalising function, boosting the envelope so that the peak amplitude is at 100%.
Reverse reverses the envelope, but not the sound itself. By combining this function with Reverse, which reverses the whole soundfile, you can have a sound play backwards but with the original forwards envelope.
Timestretch stretches or shrinks the timebase of the envelope so that it no longer matches the original length; the sound itself stays the same length.
Ceiling raises the entire envelope up to the maximum level (counteracting any built-in decay).
Corrugate tightens the envelope peaks by taking the troughs (dips in amplitude) down to zero. (It doesn't work well if there are no troughs!)
Ducked: the envelope is kept below a set level gate. Amplitudes higher than THRESHOLD are reduced to GATE.
Expand inflates the envelope: levels less than GATE are zeroed, while levels above GATE are scaled up so that THRESHOLD is the minimum level.
Gate uses a threshold or gate level: levels less than GATE are zeroed; optionally, segments less than SMOOTHING are also deleted.
Invert turns the envelope upside down: values above MIRROR are set to the same amount below mirror, and vice-versa; there is also a gate parameter (< mirror): values less than gate are set to 0.
Limit (like a commercial limiter) squeezes any signal level above THRESHOLD into a range between it and an upper LIMIT.
Trigger creates a new envelope of sudden on-bursts, triggered by the rise-rate of the current envelope. To trigger the new envelope, a certain degree of envelope-rise is required, and for a minimum time.FILTER
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).
GENERAL FILTERS
- 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 the sharpness of the band and hence degree of focus on the centre-frequency peak. (See also Filter in Spectral | Amplitude.)
- 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.
FILTER BANKS
- 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 (DATA MENU) and Filtrage (DATA MENU): two functions generating filter data files for Varibank; Filtrage produces randomised frequencies within user-limits.
PITCH
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. (CDP's separate multi-channel functions for Speed (incl. Accel and Vibrato) are invoked automatically by Soundshaper.)
- Accel changes speed by accelerating (raising pitch) or decelerating (lowering pitch). You set the transposition you want to achieve by what time, and it calculates the glissando.
- 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. One possible application is to extract pitch from Infile 1 sound as an audio signal (GetPitch + PchHear), and use this (probably spectrally transposed via Transpose) as Infile 2. In this case the modulator is a simple tone (like RingMod), but tracks the changing pitch of Infile 1 to give a more stable timbre.
- 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.
REVERB & ECHO
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.
- 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. The sample rates of the two soundfiles must be the same. The second input file is a soundfile or a textfile (extension .txt) containing an impulse response, e.g. reverb. or FIR filter.
- Reverb / Roomverb / Roomresp (DATA MENU): 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. You have to guess a trail-time to hold the added reverb, and edit this as necessary afterwards.
- 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, each occurring at the "delay" time-lapse. Feedback can be positive or negative; with negative feedback, the phase is inverted and gives rise to wave cancellation. Delays less than 50msecs occur faster than 20 times a second, which is the threshold of pitch. With feedback, such repeated delays give rise to a resonance: the signal "drives" the resonance to create a pitched note.
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. When feedback is added, each of these tapped signals is returned to the input, generating further delays in the same pattern. The tapped delays (before feedback) are given as a textfile of time amp pairs (to which pan position can optionally be added). Make these repetitions irregular unless you want to create a tuned resonance. Delay times longer than c.60ms create separate rhythmic events.
- Freezedelay/Chorus (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. AMP_CUT specifies a randomized gain reduction on each iteration, required for a general echo effect.
To create a "chorus effect", you need multiple repetitions of the input at a short delay time, ideally randomly variable, and with some pitch variation as well. Freezedelay has exactly the right parameters for this: use the whole sound and small delays of about 0.01-0.03 secs (10-30 ms). For the output, you specify either an outfile length, or an exact number of repeats.
- 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
- Shrink repeats a sound, but shrinks its length on each repetition, either from the end, the middle, the start, or around the specified time. The gaps between the repetitions are also shrunk. One of the various options produces reversed segments in the outfile. When this file is itself reversed, the segments expand/decelerate rather than shrink/contract.
ShrinkPks isolates events in the sound, giving multiple outputs which shorten from one to the next. In the first mode, the program finds the peaks around which the segments are based; in the second, the user specifies these in a textfile.
- 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. To understand the process clearly, experiment with speech.
- 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.
EXTEND / SEGMENT
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).
- 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. You can mirror less than the whole sound with a splice parameter for cross-fading at the join.
- 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). When a segment has finished repeating, the next one begins; there is no overlap. The segments can be of equal length or can be time-varying. 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 and vice-versa. There is also a hold mechanism ('sober') whereby the input file continues to be read from where the read marker happens to be at the time. The hold-time is set between MINDRUNK and MAXDRUNK, while the 'sober' duration is set between LOSOBER and HISOBER.
- 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. In Mode 1, segments may overlap; because of the random selection, any bits of the file may be repeated quite quickly and some may not appear at all. In Mode 2 the file is cut into random chunks which do not overlap and the entire file is used, once only, before the process starts over again.
- Shred randomly cuts and splices repeatedly, within the existing file-length. The sound is cut into random segments, determined by CHUNK length (varied randomly by SCATTER) and the number of REPEATS, 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.
- Noisextend, developed for speech, searches for sybillants (or noise materials in any input sound) and allows them to be sustained. It extends only the first noise component that it finds at the given parameter specifications. Optionally, the extended noise component can be saved on its own, perhaps providing useful source material for further transformations.
- Fracture cuts enveloped segments and disperses these in multi-channel space.
GRAIN
The Grain process extends the principles in Loop to create either thickly textured sounds out of overlaid segments, or separately segmented sounds.
- 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. DENSITY controls the number of repetitions and overlapping: >1, the grains overlap; 1, grains are laid end-to-end; <1 there are gaps between them:
>1: overlap 1: end-to-end <1: gaps
______ ______ ______
______ ______ ______
______ ______ ______
GRAINSIZE sets the segment length. The amount of overlap is determined by GRAINSIZE / DENSITY - e.g. if GRAINSIZE is 200msecs and DENSITY is 50, then a new grain will start every 4msecs. VELOCITY determines the speed at which the original file is read: <1 the sound is time-stretched; >1 it is shrunk. PITCHSHIFT transposes the grains, which has only a small effect on the overall outfile length, if the grains overlap. The GRAIN page defaults to the BRASSAGE mode, which has all the main parameters. WHOLEGRAIN mode introduces "high" versions of the parameters, the value being chosen at random between the ordinary and high values. SAUSAGE mode is identical to WHOLEGRAIN, except that the process cycles round several input soundfiles. Almost all of the parameters are time-varying, giving many possibilities.
- MchGrain (CDP: wrappage) is the same as Grain-Sausage, except that the output is distributed over a given number of channels. There can be more than one input (Soundshaper will accept mono, stereo or multi-channel). The multi-channel distribution is spread 'outwards' from a designated central channel.
- 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 (set DENSITY to <1). 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.
GRAIN FUNCTIONS
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.
- GrnAssess, GrnFind, GrnCount and GrnTimes (INFO MENU) 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 using s datafile of transposition values, which are rotated. In "repeat grains" mode, the full tranposition cycle is applied to each grain in turn.
- GrnRhythm changes the duration of grains using a datafile of duration-multiplier values, which are rotated. In "repeat grains" mode, the full data cycle is applied to each grain in turn.
- GrnMotif changes the pitch and duration of grains using a datafile of transposition duration_multiplier values, which are rotated; i.e. grains are turned into a pitched and timed motif, which is repeated. In "repeat grains" mode, the full data cycle is applied to each grain in turn.
- 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). As with other gated procedures, the trick is to get the TROUGH parameter right (estimate the amount of amplitude drop between the grains) and set a small window size if the grains are small. See also the related Info function GrnTimes, which can produce a set of times to adjust for Put-grains mode.
PITCH-SYNCHRONIZED GRAINS (PSOW)
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. It reports to the Report Window. If the source is not a suitable one (e.g. if not vocal), the process "hangs" without reporting an error. (This can be cleared using Windows' Task Manager.)
- PSCut cuts the file at a specified pitch-synchronized grain. The files are cut at zero-crossings in the signal, and can hence be joined together without splices.
- PSChop extracts separate files, based on pitch-synchronised grains. A datafile of time graincount specifies the chunks to be extracted. The aim is to allow selected portions of a sound to be processed and not others; the extracted portions could either be those that were processed or those that were not.
- 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. This parameter interacts with TIMESTRETCH in unpredictable ways.
- 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 you set start and end times for the chunk to be frozen. Longer durations may produce clearly repeated chunks, e.g. groups of words. A NUDGE parameter shifts the position of the sustained grain slightly and mixing several nudged outputs together can produce phasing effects.
- PSPartials (CDP: psow reinforce) attempts to reinforce 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. The output (cell following Infile 1) predominantly reflects the content of Infile 2, though the outfile length is approximately that of Infile 1. A GATE parameter allows low-level in the 2nd sound (in dB) to be ignored.
- PSInterleave interleaves (groups of) pitch-synchronous grains, from two soundfiles. You can set the number of grains in each segment. The other parameters control the relative importance of one file over the other.
- PSReplace combines the pitch-synchronous grains (FOFs) of the first sound with the pitch of the second. It is assumed that both files have pitched grains. GRAINS, the only parameter, sets the number of grains in a group (segment). The outfile length is approximately that of Infile 1.
- 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, including the time-varying VARIBANK format, or it can be synthesised noise.
TEXTURE
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 (optionally 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, though any sound can be used. Only the main features are discussed below; for further information on the many parameters, read the supplied Quick-help notes (F1 on Parameter pages) and the CDP manual, and try the preset examples, supplied by CDP. Also supplied are example NOTEDATA files for each process.
- 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. Groups start at time-intervals set by the PACKING rate (from one group onset to the next), as varied by SCATTER.
- 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.). Groups are separated by SKIPTIME: the time from the end of one group to the start of the next.
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, defined in NOTEDATA. As in Decorate, groups are separated by SKIPTIME: the time from the end of one group to the start of the next. 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).RHYTHM
CDP's 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
- 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.RETIME PEAKS
- 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.
RETIME EVENTS
- 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.
DISTORT CYCLES
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. (Note that 60 out of 180 is NOT the same as 1 out of 3: a group of 180 cycles is a substantially different chunk size from 3!)
- CycMultiply / CycDivide: cycles are duplicated so as to raise or lower the frequency by a proportion (2=8ve etc.). Only harmonic multipliers are allowed. 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). With small groups, the rate of repetition creates a buzzy resonance, lasting as long as the number of repeats. The process works well with large groupsizes, e.g. 100-20.
- 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. CycHarmonics produces a less distorted effect than CycFractals, if a small number of harmonics of cut-down amplitude are used. In both cases, pre-scale is recommended (e.g. 0.5) to avoid a clipped signal.
- 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. With large groups, this is an effective shuffling procedure.
RETURN to top of page |