Csound is one of the most widely acknowledged and long standing programs in the field of audio-programming. It was developed in the mid-80’s at the Massachusetts Institute of Technology (MIT) by Barry Vercoe.
Csound's history lies deep in the roots of computer music, however, as it is a direct descendant of the oldest computer-program for sound synthesis, 'MusicN' by Max Mathews. Csound is free, distributed under the LPGL licence and it is tended and expanded by a core of developers with support from a wider community.
Csound has been growing for more than 25 years. There are few things related to audio that you cannot do with Csound. You can work by rendering offline, or in real-time by processing live audio and synthesizing sound on the fly. You can control Csound via MIDI, OSC, or via the Csound API (Application Programming Interface). In Csound, you will find the widest collection of tools for sound synthesis and sound modification, including special filters and tools for spectral processing.
Is Csound difficult to learn? Generally, graphical audio programming languages like Pd, Max or Reaktor are easier to learn than text-coded audio programming languages like Csound, SuperCollider or ChucK. You cannot make a typo which produces an error which you do not understand. You program without being aware that you are programming. It feels like patching together different units in a studio. This is a fantastic approach. But when you deal with more complex projects, a text-based programming language is often easier to use and debug, and many people prefer programming by typing words and sentences rather than by wiring symbols together using the mouse.
Note: Thanks to the work of Victor Lazzarini and Davis Pyon, it is also very easy to use Csound as a kind of audio engine inside Pd or Max. See the chapter "Csound in other applications" for further information.
Amongst text-based audio programming languages, Csound is arguably the simplest. You do not need to know anything about objects or functions. The basics of the Csound language are a straightforward transfer of the signal flow paradigm to text.
For example, to make a 400 Hz sine oscillator with an amplitude of 0.2, a PD patch may look like this:
The corresponding Csound code would be the following:
instr 1 aSig oscils 0.2, 400, 0 outs aSig, aSig endin
One line for the oscillator, with amplitude, frequency and phase input; one line for the output. The connection between them is an audio variable (aSig). The first and last lines encase these connections inside an instrument. That's it.
But it is often difficult to find out how you can do all the things in Csound that are actually possible. Documentation and tutorials produced by many experienced users are scattered across many different locations. This was one of the main motivations in producing this manual: To facilitate a flow between these users and those willing to learn more about Csound, offering both the beginner and the advanced user all the necessary information about how they can work with Csound in any way they choose for creating their music.
Ten years after the milestone of Richard Boulanger's Csound Book the Csound FLOSS Manual is intended to be a platform for keeping the information about Csound up to date and to offer an easy-to-understand introduction and an explanation of different topics - not as detailed and in depth as the Csound Book, but including new information and sharing this knowledge with the wider Csound community.
Throughout this manual we will attempt a difficult balancing act. We want to provide users with nearly everything important there is to know about Csound, but we also want to keep things simple and concise to save you from drowning under the thousands of things that we could say about Csound. At many points, this manual will link to other more detailed resources like the Canonical Csound Reference Manual (which is the primary documentation provided by the Csound developers and associated community over the years) and the Csound Journal (edited by Steven Yi and James Hearon), which is a great collection of many different aspects of Csound.
Good luck and happy Csounding!