Csound

From Wikipedia, the free encyclopedia

Csound is a computer programming language for dealing with sound, also known as a sound compiler or an audio programming language. It is called Csound because it is written in the C programming language, as opposed to some of its predecessors. Csound was originally written at MIT by Barry Vercoe, based on his earlier system called Music 11, which in its turn followed the MUSIC-N model initiated by Max Mathews at the Bell Labs. It is free software, available under the LGPL. Its development continued throughout the 1990s and 2000s, led by John ffitch at the University of Bath, resulting in the launch of Csound 5 in February, 2005. Many developers have contributed to it, most notably Istvan Varga, Gabriel Maldonado (who developed a variant of the system, CsoundAV, which includes image and graphics processing extras), Robin Whittle, Richard Karpen, Michael Gogins, Matt Ingalls, Steven Yi and Victor Lazzarini.

Developed over many years, it currently has a vast number of opcodes/unit generators (modules) (over 1200), probably the largest number in any such system. One of its greatest strengths is that it is completely modular and expandable by the user. Csound is closely related to the underlying language for the Structured Audio extensions to MPEG-4, SAOL.

Contents

[edit] Csound Code

Csound takes two specially formatted text files as input. The orchestra describes the nature of the instruments and the score describes notes and other parameters along a timeline. Csound processes the instructions in these files and renders an audio file or real-time audio stream as output.

The orchestra and score files may be unified into a single structured file using markup language tags (a CSD file). Here is a very simple example of a unified Csound data file which produces a wave file containing a one second sine wave tone of 1 kHz at a sample rate of 44.1 kHz:

<CsoundSynthesizer>;
 
  <CsOptions>
    csound -W -d -o tone.wav 
  </CsOptions>
 
  <CsInstruments>
    sr     = 44100           ; Sample rate.
    kr     = 4410            ; Control signal rate.
    ksmps  = 10              ; Samples pr. control signal.
    nchnls = 1               ; Number of output channels.
 
    instr 1 
    a1     oscil p4, p5, 1   ; Simple oscillator. 
           out a1            ; Output.
    endin
  </CsInstruments>
 
  <CsScore>
    f1 0 8192 10 1           ; Table containing a sine wave.
    i1 0 1 20000 1000        ; Play one second of one kHz tone.
    e
  </CsScore>
 
</CsoundSynthesizer>

As with many other programming languages, writing long programs in Csound can be eased by using an integrated environment for editing, previewing, testing, and debugging.

[edit] Csound 5

In 2006, as Csound completed 20 years of its first release, version 5 was released. This latest incarnation of the software is currently available in binary and source code for Linux, Windows and Mac OS X from the Sourceforge Csound project [1]. It is a much improved and expanded version of the original software, effectively made into a software library, with an API. A variety of frontends for it have been developed. In addition to the basic C API, there are also Python, Java, LISP, Tcl and C++ (among other) bindings.

[edit] Csound on OLPC

Csound5 was chosen to be the audio/music development system for the OLPC project on the XO-1 Laptop platform. Its integration with the Python language allows it to be easily employed in the development of activities such as Tam-Tam.

[edit] See also

[edit] External links

  • Official website contains FAQs, manuals, programming examples, other front end programs, and misc other goodies. The mailing list archive is also a good place to find detailed information.
  • Project site at Sourceforge
  • The Csound Manual
  • MacCsound is an integrated Csound programming environment for Macintosh.
  • Csound for MacOS Classic
  • Csound Editor is an integrated programming environment for Csound [Windows].
  • WinXoundPro another IDE for Csound.
  • Dex Tracker Dex Tracker a tracker style front end for csound Including a grid editor and code generation tools, and the ability to save your favorite sounds and rhythms as presets
  • blue A music composition environment for Csound.
  • Bol Processor A music composition environment for Csound and MIDI
  • Csound Features Automated Csound orchestra building from individual instruments in csd format, and record to Csound in real time (windows program)
  • AlgoScore An algorithmic composition environment where one works in a graphical score, for Csound and MIDI.
  • Csound-OLPC The Csound page in the OLPC wiki, with extra tutorials and XO-specific information and Dr.B's TOOTs
  • The Csound Book edited by R Boulanger and the 3500+-instrument Csound Catalog
  • Cecilia a production frontend for Csound.
  • Lettuce a Windows frontend/editor for Csound5.