Sound Design Workshop: Anything Goes

Image placeholder title
Image placeholder title

The cross-platform QuteCsound front end for Csound has syntax coloring, built-in mouse widgets, one-click audio file rendering, an info line, and other useful features. The code editor is in the center pane, the manual is on the right, and Csound''s output (produced as your file is being played back or rendered to disk) is at the bottom.

One of the best-kept secrets in computer-based sound design is Csound. A powerful tool for synthesis and experimental composing, Csound (Mac/Win/Linux) is a free download from

Csound will do modular synthesis with an unlimited number of oscillators, filters, waveshapers, envelope generators, and so forth. It will do sample playback, granular synthesis, FM, resynthesis, physical modeling, and even more esoteric types of synthesis. It comes with hundreds of specialized modules and has an ultraclean, high-res sound. You can use it in the studio or play it in real time with MIDI and mouse-operated knobs and sliders.

Now for the bad news: Csound doesn''t offer a friendly user interface. You''ll need to learn to create sounds by typing lines of computer code. The documentation is extensive and cross-linked for easy navigation in a browser, but it''s often terse and difficult to understand. Even getting Csound to send audio to your computer''s audio hardware may require some trial and error.

Up Front
Several front ends for Csound make the workflow easier. The QuteCsound interface (Mac/Win, free) is both a code editor and a playback system. It also allows you to create a panel of mouse-controlled sliders. The sliders will be handy if you''re using Csound in live performance, but their output won''t be stored in your Csound instruments, so you can''t easily use them for sound programming.

Also worth a look is a front end called Blue (Mac/Win/Linux, free). In Blue, you arrange the phrases of a Csound score on a multitrack timeline that looks and operates like a conventional sequencer. Blue also has a piano-roll editor, algorithmic phrase processing, and a built-in FM synthesizer with a user-friendly front panel.

Neither front end eliminates the need to learn Csound, which is both a text-based programming language and a library of modules called opcodes. The Csound community has an active mailing list where experienced users can answer your questions.

Modular Synthesis
Csound''s opcodes have inputs and outputs. The outputs are on the left, followed by the name of the opcode, followed by a list of inputs. Here''s a line of code:
aout oscil kamp, kcps, 1
That line adds an oscillator to your instrument. The symbol aout is like an audio patch cord. It passes the output of the opcode, called oscil, to the input of any other opcode in the instrument you''re creating. The inputs to oscil (like control patch cords) are an amplitude (kamp) and a frequency (kcps). Those would come from some other module. Values that begin with k are control signals. The final value, 1, tells oscil what waveform to use.

Build a mixer using a plus sign. Change the level of a signal using an asterisk. To mix two audio signals while controlling their amplitudes, write something like this:
amix = (a1 * klevel1) + (a2 * klevel2)

If that way of working doesn''t intimidate you, you''re well on your way to Csound mastery.

Patch cords can link multiple Csound instruments together in performance; you use them like aux effect sends. Csound also includes a text-based sequencer, in which you can write music by typing lists of events.

Granular Synthesis
Csound includes several opcodes that do granular synthesis, but even after consulting Richard Boulanger''s 700-page Csound Book, I wasn''t happy with the sound of my experiments. So I built my own granular synthesizer from scratch. I created one instrument that would play a single grain of sound drawn from a sampled waveform, and another instrument that generated a rapid stream of note events, triggering the grain instrument.

I used a Csound opcode called random to control the grains'' length, start point, panning, and amplitude. I ended up with a babbling cloud of vocal sounds, which I saved as a WAV file by clicking QuteCsound''s Render button (see Web Clips1, 2, 3, and 4).

Csound users often share instrument designs and complete scores with one another. Patience is required, but the results are worth the effort.

Jim Aikin writes about electronic music, plays classical cello, and has a mystery novel looking for a publisher.