Csound is one of the best known and longest established programs in the field of audio-programming. It was developed in the mid-1980s at the Massachusetts Institute of Technology (MIT) by Barry Vercoe.
Csound's history lies deep in the roots of computer music. It is a direct descendant of the oldest computer-program for sound synthesis, 'MusicN', by Max Mathews. Csound is free and open source, distributed under the LGPL licence, and 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 is rarely anything related to audio 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 speaking, graphical audio programming languages like Pure Data,1 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 to program by typing words and sentences rather than by wiring symbols together using the mouse.
Thanks to the work of Victor Lazzarini and Davis Pyon, it is also very easy to use Csound as an audio engine inside Pd or Max. Have a look at 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 any specific programming techniques or be a computer scientist. The basics of the Csound language are a straightforward transfer of the signal flow paradigm to text.
For example, to create a 400 Hz sine oscillator with an amplitude of 0.2, this is the signal flow:
This is a possible transformation of the signal graph into Csound code:
instr Sine aSig oscils 0.2, 400, 0 out aSig endin
The oscillator is represented by the opcode oscils and receives its input arguments on the right-hand side. These are amplitude (0.2), frequency (400) and phase (0). It produces an audio signal called aSig at the left side which is in turn the input of the second opcode out. The first and last lines encase these connections inside an instrument called Sine.
It is often difficult to find up to date resources that show and explain what is possible with Csound. Documentation and tutorials produced by developers and experienced users tend to be scattered across many different locations. This was one of the main motivations in producing this manual: to facilitate a flow between the knowledge of contemporary Csound users and those wishing to learn more about Csound.
Ten years after the milestone of Richard Boulanger's Csound Book, the Csound FLOSS Manual is intended to offer an easy-to-understand introduction and to provide a centre of up to date information about the many features of Csound - 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: to provide users with knowledge of most of the important aspects of Csound but also to remain concise and simple enough to keep you from drowning under the multitude of what is possible with Csound. Frequently this manual will link to other more detailed resources like the Canonical Csound Reference Manual, 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), a quarterly online publication with many great Csound-related articles.
We hope you enjoy reading this textbook and happy Csounding!