What is csound?
csound is a software package allowing you to synthesize sounds in software.
It is not a realtime MIDI synthesizer, though it has some "realtime" capabilities. It is best suited for experimental compositions in which the composer wishes to use synthesis techniques otherwise unavailable on production equipment.
To use csound, the composer creates two files: an orchestra file, which describes the synthetic instruments which csound is to simulate, and a score file, which describes the actions the instruments are to take. The composer writes these files ahead of time and runs the csound program to create the output. The newest version of csound has some real-time controls; instruments can sense MIDI events and act on them.
What are some of the things it can do?
csound implements many synthesis techniques unavailable through other means, such as granular synthesis, user-controlled physical modeling, Karplus-Strong plucked-string synthesis. Given sufficient processing time and patience, a csound orchestra can simulate thousands of oscillators; can provide microtuning in any scale the composer can conceive of; and can make sounds unlike those available from any other method.
What can't it do?
It can't - as yet - replace a full-blown production-model synthesizer as a real-time instrument. Nor can it be used to easily play back a General MIDI sequence. It is suited much more for experimentation, rather than "workday" musical performance.
Where can I get it, and how much does it cost?
csound is free.
The csound Front page at Leeds University provides pointers to many different implementations of csound, both source and binaries. It also has a pointer to the csound manual and the csound FAQ, as well as pointers to current csound-based projects, accessories and resources, courses, and FTP sites.
The csound front page is your core resource for csound.
What's using csound like?
csound can probably best be likened to programming a computer in assembly language. Every tiny little step that you take in producing a sound needs to be specified in detail, and you must keep track of how you are getting control messages in and sending them out. If you have not programmed in any language before, you will find csound to be a daunting prospect.
The language is rich in operators which deal with entire arrays of samples at a time, but has no concept of a "subroutine call". Operations which would be simple to implement as interactions between two or more instruments are mind-bogglingly difficult to conceptualize in the language.
You must also write a score which causes the orchestra to play. This is another mostly-numeric file which describes when notes are to be played, at what pitches, and when. There is a "score compiler" that makes this process a little simpler, allowing you to put together a coded form of standard musical notation which is compiled into a csound score file.
Does it really have to be this difficult?
There are a few alternatives.
Russel Pinkston's Patchwork is an orchestra creation tool which allows you to put together csound instruments in a graphical interface, linking objects together via connectors.
Michael Gogins' Silence front-end (for Windows 95/Windows NT) provides a graphical front-end to csound; it is particularly designed to convert iterated function systems (specifically Lindenmayer systems) into csound or MIDI files, and to take graphics from the Windows clipboard and convert them ito csound or MIDI files. Best suited to algorithmic composition; not a general-purpose system.
Several others (and these two as well) are available through the csound front page.
Is it worth it?
Yes! csound is capable of doing things unlike any other method of synthesis. If you've really reached the end of what your current equipment can do, and you have time to spare but no money to put into further experimentation, try csound.