CDP's Composers Desktop Project 4.5 (CDP) is a huge sound-processing library that has been in development for personal computers since 1986. CDP includes a wide range of innovative, sophisticated, and flexible processing functions, and though mastering the system can be a challenge, the creative control it gives you is worth the effort. The full-release core system costs $184 ($165 with educational discount). This collection will be of use to a wide range of composers and sound designers who wish to manipulate and transform sound in various imaginative ways. It has also proven useful for music and video production, advertising, and music for theatrical productions. I can imagine it being used to create teaching demonstrations about electronic music or acoustics as well.
Originally CDP was designed as a collection of processing routines that were run separately as command-line programs — for example, in an MS-DOS command window running under Windows or in another operating system such as Unix. But CDP also provides graphic user interfaces (GUIs) to let you get at the functionality of the routines in a more convenient way. Ensemble Software's SoundShaper 1.02 ($48; $43 with educational discount) and Trevor Wishart's Sound Loom (free) give you access to the entire collection of commands. A third GUI, GrainMill (free), focuses on the granular synthesis features of CDP. (All three supplemental programs are available at the CDP Web site.)
CDP comes on a single compact disc, and installing the program amounts to simply copying all the files onto your computer. Follow the instructions carefully, because CDP needs to have its components in the right directories. You will need to edit your autoexec.bat file to ensure proper settings each time you boot up. You'll also need to remove the read-only setting from some files so they will function properly. If your experience is like mine, you'll have a few details to fine-tune after installation (making sure the programs can locate all the executables and online documentation, for example). Because CDP doesn't use an automatic installation program that creates links on the desktop and in the Start menu, you have to create any desired quick start-up links manually.
GETTING IN SHAPE
As mentioned, SoundShaper is one of two graphic interfaces for working with the many CDP functions. When you launch SoundShaper, you see a long, narrow window with menu names across the top that access CDP's functions (see Fig. 1). The area to the left is for the display of working directories and currently selected files, and in the center are two transports for listening to your work. There are other buttons for simple editing functions and for using markers with the open file.
To process a file, press the Open button; a File/Open dialog appears. After you've located the desired file, the INFile Folder and INFile text boxes (which are slightly hidden under the overlay in Fig. 1) display your selection. Next, go to the ProcessSF Menu item and select a function — Reverb/Echo, for example. Once you've made your choice, a new window, called the Command Page, appears (see Fig. 2).
Each of the many CDP commands has a Command Page containing easily adjustable parameters. To the lower right are boxes confirming your choice of sound files for the input and output; even though you already chose the input file in the main window, you can change your mind here. The name of the output file is created automatically, but you can also change it if you wish (the WAV extension is added by default). Note that CDP commands always produce a new file, so you will not inadvertently destroy your originals.
The area in the lower left, labeled Presets and Snapshots, lets you save settings to use again. Presets can be saved to disk, but Snapshots are available only for a single work session and will not be remembered after the program is closed. Presets and Snapshots can greatly speed up your work and let you move easily from one frequently used area of the program to another.
After you press OK, an MS-DOS window appears showing a progress report on the function you're running. (On my computer, the MS-DOS window often first showed a message saying “Parameter value not in allowed range.” It doesn't seem to mean anything and can be ignored.) When the process finishes, you'll see some new information, such as the length of the newly created file. You must then close the MS-DOS window and click on OK in a seemingly redundant small dialog before you are returned to the main window. Here, the file you just created is displayed in the INFile window.
To hear the new file, press the green triangle in the Play Sound transport. If you push the Repeat INFile button, the previously selected file reappears in this space; in effect, Repeat INFile works as an Undo command. (This feature steps back only once to the most recently used sound file. A multilevel Undo command would be helpful.) The Repeat Command button brings up the most recently used Command Page with all of your last settings intact; that's a handy way to repeat a process and fine-tune the parameters to your liking.
Rounding out the main features, there's an Exit button to close the program and a Reset button for clearing the INFile box. Despite the minor issues I've mentioned, SoundShaper is a huge improvement over command-line operation of the CDP routines.
The CDP library itself consists of two main categories: time-domain and frequency-domain processes. Notice in Fig. 1 the two menu items for these functions: ProcessSF (time-domain) and Spectral (frequency-domain). (The documentation uses the word Groucho to refer to time-domain functions, reflecting a fondness for the Marx Brothers on the part of Andrew Bentley, who wrote the first set of time-domain programs some years ago.)
The ProcessSF commands are divided into nine categories: Envelope, Filter, Pitch, Radical, Reverb/Echo, Extend, Grain, Texture, and Wavecycles. There are 11 envelope functions (and many more if you count the additional 15 functions for warping the envelope in various ways). These are for creating and applying amplitude envelopes and include many exotic options, such as applying the envelope of one sound to another.
The ten Filter commands give you lots of interesting options for filtering a sound, including the ability to create customized filter banks tuned to the harmonic series or whatever pitches you'd like. You can even create your own time-varying filter bank by precisely specifying the desired times and frequencies for the filters' settings.
The four Pitch commands let you transpose a sound (either by semitones or by ratio), create vibrato, or accelerate or decelerate a sound as it plays. There are five commands in the Radical category: Ring-mod (multiplying a sound file by a second user-selected tone for a nicely robotic-sounding distortion effect), Cross-mod (multiplying two signals by each other), Reverse, Degrade (intentionally reducing the resolution and sampling rate to create distortion), and Scrub.
There are ten varieties of Reverb/Echo commands. The options available here exemplify the flexibility CDP provides throughout. The Reverb command, for example, lets you specify the settings of each comb and allpass filter directly in the Reverb Command Page, but you can also create a control file specifying early reflections of a reverberating space. The six Extend functions start with the idea of looping but go far beyond it. For example, you can select the loop-segment start times at random so the sound can be radically scrambled; you can include backwards loops or pitch changes in the process; or you can move the start point of the loop gradually forward through the sound file. I particularly like the potential that this family of processes presents for creating gradually evolving sounds, as well as sounds with abrupt surprises. (You'll find a number of sounds produced with the CDP system on the EM Web site.)
There are 17 functions in the Grain category and 14 in the Texture category, and CDP comes with a useful set of tutorial examples in those areas to get you started. The basic idea here, called granular synthesis, is to take segments of a sound file (grains) and play them back in various ways to create many different kinds of textures. There are a vast number of ways to manipulate the grains, such as controlling their duration and density or changing the pitch of an entire file. You can also create a detailed text file that specifies how the pitch should change over time, or you can scramble the grains in various ways. Another interesting option is to use the Find Grains command to locate grains in a sound file and use that information in “granulating” a completely different file.
The Texture functions also work with fragments of a sound file. By controlling the pitch and rhythmic characteristics of the fragments, you can create a wide range of specific harmonies and melodic patterns in the resulting textures. That can lead to some splendidly interesting and beautiful sounds that unfold in ways you can hardly imagine. To hear an example, listen to the file texture sine.mp3 at the EM Web site. It started life as a homely sine wave (sine source.mp3) and was processed by a Texture routine that got its pitch information from a separate text file.
Wavecycles has 20 distortion routines that offer some very imaginative possibilities. Among these are interleaving single cycles from two different sound files, adding harmonics to each cycle of a sound, averaging a sound over a specified number of cycles, and omitting cycles or otherwise telescoping the sound by overlapping cycles. You can also delete cycles that are in a specified frequency range, randomly change the frequency of cycles, or duplicate a waveform a specific number of times and smoothly shift between the various versions. This process can produce a weird random melody using the most innocent source material.
You can hear an example of the Average command at the EM Web site. I started with a simple piano passage (piano source.mp3) and produced a new file by averaging groups of 16 successive cycles (average piano.mp3). You can vaguely trace the original in the transformed sound, but anyone hearing the cascading effect of electronic tones would never guess that they were produced from a piano recording.
IN THE FREQUENCY-DOMAIN
All the tools discussed so far operate in the time domain (that is, directly on the waveform data found in a sound file). Another powerful group of commands, accessed through the Spectral menu of SoundShaper, operates in the frequency domain. To use this group, you first create an analysis file containing information about the changing amplitudes of a sound's frequency components. The analysis routine isolates successive groups of samples (called windows or frames), the size of which is determined by the user. To create the analysis file, CDP uses a process called phase vocoding.
To access the phase-vocoding routine in SoundShaper, choose Convert (PVOC) from the Spectral menu and then choose Analyze. After you pick the file you want to dissect, the Phase Vocoder screen appears, giving you two options: FFT (Fast Fourier Transform) Size and Filter Overlap Factor. The default FFT Size (1,024) and Filter Overlap Factor (3) work in many cases, but you can increase the FFT Size to obtain a higher-resolution frequency analysis or the Filter Overlap Factor to obtain greater temporal accuracy. The Spectral commands create analysis files that you can preview using the rightmost SoundShaper transport; when you're satisfied with your settings, you can resynthesize the analysis file back into an audio file using the Synth option under Convert in the Spectral menu.
There's not much point in doing an analysis just to resynthesize the data back into its original form — tweaking the analysis before resynthesizing lets you transform sounds in ways that are simply not possible in the time domain. CDP offers a host of options in this area.
Among the many spectral-processing tools are 15 Spectral Amplitude functions that process the amplitude values in the analysis file. They include various filtering options, arpeggiating through the frequency bands, applying a pseudo-sustain-pedal effect to selected bands, and averaging bands. One of the Spectral Amplitude functions, called Focus, finds the most prominent spectral peaks in the sound and emphasizes them throughout the duration of the resynthesized sound file, in effect “focusing” the sound energy on those bands. I applied a moderate amount of Focus to a simple speech recording (speech source.mp3) to create a new file (focus speech.mp3) in which you can still discern the original.
There are also 15 Frequency/Pitch commands that can change the frequency values in the analysis file. You can transpose the pitch without changing the length of the sound file (which is one of the classic uses of the phase vocoder), spread the pitch bands out over a selected range, shift the frequency values in various ways, create a chord built on the original sound, tune the original sound to a specified pitch or set of pitches, and much more.
The nine Morph/Formants commands use the analyses of two different sound files and include various ways to blend their spectra. One possibility is cross-synthesis, which uses spectral data from one sound to alter the data of another. There are also tools for storing extracted data from the analysis file for use elsewhere or for viewing. In addition, six so-called multifile processes do things such as averaging the amplitudes of each frequency band in two files or taking their differences and creating a new file from the original two. That's quite an extensive set of options!
If that's not enough to keep you occupied, you'll also find ten Time functions for manipulating a file's temporal characteristics. In addition to changing the length of a sound file without altering its pitch, you can, for example, freeze a single window of the sound or freeze frames periodically, blur the spectrum across frames, or change the playback order of windows in various ways. Try as you might, you won't find this range of processing functions in any other software-only system. The file freeze speech.mp3 at the EM Web site applies the Freeze Time function to the file speech source.mp3.
One of the largest groups is called Pitch Data, which contains 19 options. Here are functions that let you randomize, quantize, invert, smooth, shift, and otherwise alter the pitch data in the analysis. Finally, there are six useful utilities for tasks such as changing the gain of an analysis file or grabbing a single analysis window.
SoundShaper's Tools menu provides access to ViewSF, a simple WAV-file viewer in which you can place and record markers. Though ViewSF is useful, you'll probably prefer to have a more sophisticated external sound-file viewer and editor available while working with CDP. Another tool is BreakEdit, a visual break-point editor. BreakEdit lets you create envelopes with an unlimited number of break-points for use anywhere you wish. You can also extract an amplitude envelope from an existing file and reuse it elsewhere — for example, to control the frequency of another file. The Graph Editor tool can be called up whenever a command requires time-varying control. Unlike BreakEdit, Graph Editor does not support logarithmic and exponential curves.
SoundShaper also has an Edit/Mix menu. Functions there include cutting, pasting, and copying marked areas of a sound file. Working with markers (through the ViewSF tool) in CDP is not very convenient, and I generally did not find the editor functions particularly useful. You can create complex mixes from a text-file script, however, though I'd much rather use a program like Sonar for that kind of activity.
Another menu, Columns, lets you work with columns of numbers. You could, for example, access a series of frequencies used in a filter bank or a time-varying loudness control for a signal. The Columns menu includes numerous tools for creating, editing, and converting such lists. The Info menu has commands that give you basic information about sound or analysis files (for example, file length and number of channels), although similar information is routinely given on Command Pages. The Grids menu offers another handy way of navigating through the CDP library: it presents four grid patterns featuring all the commands laid out in a table (see Fig. 3). To run a command, simply click on it. (It would be nice if you could resize the grid to make more of it visible at one time.)
Sound Loom, written by CDP guru Trevor Wishart (see the sidebar “Composer Trevor Wishart”), is another GUI available for the CDP package. Space constraints do not permit a detailed look at Sound Loom here, but briefly, Sound Loom, like SoundShaper, gives you access to all the CDP commands in an integrated graphical environment. Sound Loom differs in its layout and operation, however. It has several very useful features: First, you can apply processes in bulk to many files at once. Second, you can create instruments, which are any chain of processes that can be stored and easily reapplied. (SoundShaper lets you work in a similar way using DOS batch files.) I also like the way Sound Loom's interface organizes the CDP commands (see Fig. 4).
The full release of CDP includes a well-designed interface called GrainMill that is made especially for granular synthesis. You can also get an algorithmic-composition package called Tabula Vigilans ($70; $63 with educational discount). CDP comes packaged with Csound, the sophisticated public-domain sound-synthesis program. Csound is a separate program and not within our purview here, but note that you get not only the program but some excellent detailed documentation and tutorials designed to help you get started. (For information about Csound, see “Csound Comes of Age” in the July 2002 issue.)
ROOM FOR IMPROVEMENT
I have already noted some areas in which SoundShaper's user interface could be improved. There are also certain ways in which the interface seems incomplete. For example, there are occasional inconsistencies that can be confusing, such as the use of the term Q in the filters where bandwidth would be more appropriate. File extensions are displayed in some cases but not others. Also, sometimes the default values and ranges of parameters on Command Pages are not within legal limits for the current command.
It would be wonderful if the Sound Loom interface could support dragging and dropping files from one work-space window to another. The above mentions are little things that you get used to as you use the system and are not significant detriments, but I hope they can be worked on in future upgrades.
The documentation is full of great material: tutorials, insights into sound processing, advice about learning the commands, and detailed information about each function. The contextual help is also very handy: all Command Pages have a Help menu with an associated key-press shortcut that gives access to the CDP Help page. At times, however, I found it difficult to locate information in the documentation because it is not always organized in the same way as the GUI. One example is SoundShaper's use of the term EDIT: the documentation uses SFEDIT, and neither term is in the documentation's alphabetical index. I get the impression that CDP has been evolving away from a set of many individual commands into a more integrated environment, and that evolution is not yet fully realized. As before, I would characterize these points as minor.
Though the program could be made more usable in some areas, the bottom line is that CDP is an amazing resource for anyone interested in creative and imaginative sound processing. It offers exceptional flexibility and an enormous range of features at a very reasonable price. CDP's future prospects are exciting, too. Plans include developing real-time VST and Direct-X plug-ins, creating DLL versions of the functions to make them work more seamlessly in Windows environments, broadening file-format compatibility, and developing multichannel and algorithmic-compositional capabilities. A Mac OS X port is also expected before long.
But even in its present form, CDP gives you more than enough to work with. The quality of sounds produced by CDP is uniformly excellent. Give yourself lots of time to learn the wealth of materials here, because CDP will let you do pretty much anything you can think of with your sounds, and maybe a lot you haven't yet imagined.
ComposerPeter Hamlinteaches at St. Olaf College. He is also a member of the live electronic-music improv band Data Stream.
Minimum System Requirements
Composers Desktop Project
Pentium II/333; 64 MB RAM; Windows 95/98/2000/NT 4.0 (with SP 3)/XP
COMPOSER TREVOR WISHART
A central force behind the development of CDP is composer Trevor Wishart. He has coded all of the CDP spectral programs and most of the time-domain programs, and also created the Sound Loom interface. Wishart was born in Leeds, England, in 1946. His early electro-acoustic work Red Bird (EMF CD022, 1977) illustrates his interest in and mastery of sound transformation, even though, remarkably, this piece was composed in an analog studio using tape, splicing, and mixing techniques.
As personal computers became more powerful, Wishart began to work in the digital medium. Vox-5 (Wergo 2024-50, 1986) was created by Wishart at IRCAM in Paris, using his own programs to manipulate the analysis data created with a phase vocoder. These programs represented some of the early Composers Desktop Project tools, then running on an Atari ST computer. Vox-5 is a good example of how sound can be altered, morphed, and cross-synthesized in the frequency domain.
The CD Voiceprints (EMF CD029, 2000) contains more recent examples of Wishart's work. By manipulating familiar material — the voice, for example — he generates a wide assortment of unexpected sounds. Listening to this music is like opening a geode: tap what appears to be an ordinary rock and a ravishing display of crystal colors and designs is revealed. The CD also has something of the quality of an M. C. Escher etching, a sort of sonic illusion of contrast deriving magically from gradual transformation. The music is alternately beautiful, haunting, harrowing, and whimsical. One striking example is the harmonic and rhythmic richness that flows from recordings of the voices of Martin Luther King, Elvis, and Neil Armstrong in the piece American Triptych (1999). There is also a dramatic quality and even a political statement in the use of the recorded voices of Princess Diana and Margaret Thatcher in Two Women (1998). Tongues of Fire (1995) presents everything from fanciful gnomelike chattering (which Wishart describes as “slightly angry, disgruntled, comic muttering”) to voices that subsume themselves into weirdly mechanical and very inhuman sounds. All of the more recent pieces reflect the kinds of sculpting and transforming of sound that CDP makes possible.
Composers Desktop Project 4.5 (Win)
Core system $184
SoundShaper GUI $48
algorithmic-composition processor $70
FEATURES5.0EASE OF USE3.5DOCUMENTATION4.0VALUE4.5RATING PRODUCTS FROM 1 TO 5
PROS: Huge number of flexible and powerful sound-processing functions. Reasonable price. Comprehensive. No external hardware required.
CONS: Working with GUI that runs programs in an MS-DOS window can take some getting used to. Some room for improvement in the operation of the GUIs.