Only a small number of synthesis functions are provided within CDP, which is predominantly a sound-processing system.

  • Addsynth (CDP: newsynth 1-2): generate a waveform with a time-varying spectrum and any number of (harmonic or inharmonic) partials. Mode 2 allows each wave-cycle envelope to be shaped, to a degree.

  • MchSynth (CDP: newsynth 3): generate pulsed selections of the spectrum (as defined in Addsynth) sent to a multi-channel output. Each output event is a random selection of partials from the overall spectrum and subject to octave-transposition over a specified pitch range.

  • Wave: create one of a number of traditional synthetic waveshapes: sine (single freq.), square (odd harmonics), triangle, ramp.

  • Noise: generate white noise (random selection of all fequencies) or use filtering to create "pink" noise and other filtered variants.

  • Silence: generate a silent file of any length.

  • Chord: synthesise a chord (based on sine tones) from a datafile of (possibly fractional) MIDI pitch values. The components cannot be weighted in amplitude; the intention is to allow you to hear what a particular combination of pitches might sound like (e.g. before setting pitches in Stack or Tune).

  • Spectra synthesises a warbled tone of varying pitch, centred around a chosen frequency, within a given band.

  • ClikTrak (CDP: synth clicks): create a Click-Track from a datafile.


CDP has a large number of Information functions which either report to Soundshaper's Report Window, or produce an output text file. Soundshaper's Info Menu has the following divisions:

  • Soundfiles: 29 functions which give information about a soundfile -- the general functions FileInfo and FileProps can report on most CDP file types. Some functions are specific to certain processes, notably GRAIN and DISTORT. (GrnCount or GrnAssess are especially important for use with Grain functions.)

  • Spectral: 12 functions which give information about frequency analysis files (.ana). Relating channels (frequency bands) to frequency (and vice versa) is particularly important, as is the Window count. There are also functions to track time-varying spectral peaks in the sound.

  • Pitch: 4 functions giving information about pitch files (.frq), extracted from spectral files (.ana).

  • Unit Conversions: 15 conversions such as MIDI to Hz or dB to Gain.


Some utility programs to generate data files for various processes. Soundshaper's Graph-Edit is also a general-purpose page for generating data, and has several presets as well. (More will be developed in the future.)

  • BankFreqs: create a list of frequencies for use with Filter Userbank. Amplitudes have to be added to the frequencies. Similar presets are available in Soundshaper's Graph-Edit, where you can "add" the amplitudes by manipulating the Y value, or by typing them in as text.

  • VFilters generates a basic textfile for use with Filter Varibank. (Soundshaper's own implementation of the function.)

  • Filtrage generates random-frequency filterbank data for use with Filter Varibank, (the degree of randomness being under user control).

  • Roomresp generates an early-reflection datafile for use with Reverb / Roomverb.

  • Sinedata (CDP: modify spaceform) creates a sinewave data file, intended for use with Pan, but it can be used wherever a sinusoidal LFO is required, e.g. for Tremolo.

  • Doppler calculates the necessary transposition data for a Doppler pitch-shift.

  • BrkptToRatio: Soundshaper's own conversion routine from "any" breakpoint file to equivalent ratios of the first breakpoint value. Intended mainly for pitch transposition, but has more general uses too.


Soundshaper's Data-Editor implements CDP's COLUMNS program, which has around 100 data transforming/generating functions. The COLUMNS functions are not concerned with the appropriateness of the resulting data for any particular purpose: the user must ensure that ranges and values are suitable for the intended parameter.

There are broadly five types of function:

  • Convert: these convert one form of data into another – e.g. Midi to Hertz, Multiply values
  • Sort: these re-order or group data in some way: for some functions the output is longer or shorter. Some functions which eliminate data are coded with the icon
  • Generate: these generate data – e.g. Generate harmonics, Generate accel. times – and typically require a start and end value as input.
  • Information: e.g. Find greatest, sum times. Processing functions such as Midi-Hz or Sample-count to times can also be used as information functions on a column of data.
  • Table processing e.g. Files to Columns, Concatenate files – these are found in the Tables menu.

The functions are grouped into various categories:

  • MUSIC 1: Convert Pitches and Intervals
    These functions transform pitches, frequencies and intervals in familiar ways. For example:
    Midi to Freqs / Freqs to MIDI: convert MIDI values to Frequencies or vice-versa.

  • MUSIC 2: Reorder or generate pitches
    These functions change the order of elements in the column or generate new groups based on the input list. For example:
    Motivically rotate list: cyclic rotation by N shifts.

  • MUSIC 3: Process Times and Levels
    These functions mainly process onset times and durations. For example:
    Times from durations: produce a list of onset times from a list of durations.

    Multiply: multiply all values in the list by a constant value
    Approx. Multiples: quantize all values to multiples of given value, e.g. 221, 442, 663, 884 quantised to 110 produces 220, 440, 660, etc.

    Log equal divisions: where 4 divisions between 10 and 20 produces 10.000000, 11.892071, 14.142136, 16.817928, 20.000000 or
    Repeat intervals: Starting with the last value in the list, the intervals are duplicated, e.g.(MIDI) 54,56,57 duplicated 4 times gives 54,56,57,59,60,62,63,65,66,68 - an octotonic scale.

    These modify values by a random amount or generate random values. For example:
    Scatter: create variants near the original values, e.g. 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 with a scatter value of 0.5 produced 10.000000, 20.510651, 29.267479, 40.762581, 48.124409, 57.565615, 70.957900, 79.245048, 90.660039, 100.000000.

    These functions re-order the items in the list. For example:
    Skip every Nth item: e.g. KEEP 3 skips 1 in every 4.

    These functions produce information about the items in a list. For example:
    Find greatest: finds the maximum value in the list
    Text to Hz: produces a list of frequencies from a list of pitch names.

    Separate Columns: split a multi-column file (e.g. breakpoint) into separate columns and store these as distinct files.


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.