Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Csound
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{More footnotes needed|date=November 2010}} {{Infobox software | name = Csound | logo = | screenshot = | caption = | author = [[Barry Vercoe]] | developer = [[John Fitch (computer scientist)|John Fitch]], Steven Yi, [[Victor Lazzarini]] | released = {{Start date and age|1986}}<ref>[http://csound.com/csound30/papersessions.pdf Dr. Richard Boulanger - Three Decades with Csound: The Roots, Birth, and Early Years]</ref> | latest release version = 6.18.1 | latest release date = {{Start date and age|2022|11|24}}<ref name="github">{{cite web |url=https://github.com/csound/csound/releases |title=Releases: csound/csound |website=GitHub.com |access-date=2023-02-11}}</ref> | latest preview version = | latest preview date = | operating system = [[Cross-platform software|Cross-platform]]: [[Linux]], [[Microsoft Windows|Windows]], [[macOS]] | size = | programming language = [[C (programming language)|C]] | genre = | license = [[GNU Lesser General Public License|LGPL 2.1]] or later | website = {{URL|csound.com}} }} '''Csound''' is a [[Domain-specific language|domain-specific]] computer [[programming language]] for audio programming. It is named Csound because it is written in the language [[C (programming language)|C]], in contrast to some of its predecessors. It is [[free and open-source software]], released under the [[GNU Lesser General Public License]] (LGPL) 2.1 or later. ==History== Csound was originally developed by [[Barry Vercoe]] at the [[MIT Media Lab]] in 1985,<ref name="TheSynth">{{Cite book |last1=Vail |first1=Mark |year=2014 |title=The Synthesizer |publisher=[[Oxford University Press]] |page=102 |isbn=978-0195394894}}</ref> based on his earlier system called Music 11, which in its turn followed the [[MUSIC-N]] model initiated by [[Max Mathews]] at [[Bell Labs]]. Csound development continued throughout the 1990s and 2000s, led by [[John Fitch (computer scientist)|John Fitch]] at the University of Bath. Many developers have contributed to Csound, most notably Istvan Varga, Gabriel Maldonado, Robin Whittle, Richard Karpen, Iain McCurdy, Michael Gogins, Matt Ingalls, Steven Yi, [[Richard Boulanger]], [[Victor Lazzarini]] and Joachim Heintz. Developed over many years, {{as of|2024|lc=y}}, it has nearly 1,700 [[unit generator]]s. One of its greatest strengths is that it is completely [[Modular programming|modular]] and [[Extensible programming|extensible]], by the user. Csound is closely related to the underlying language for the [[MPEG-4 Structured Audio|Structured Audio]] extensions to [[MPEG-4]], [[Structured Audio Orchestra Language]] (SAOL). == Csound code == Csound takes two specially formatted [[text file]]s 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 with [[filename extension]] .csd). 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 [[Kilohertz|kHz]] at a [[Sampling frequency|sample rate]] of 96 kHz: <syntaxhighlight lang="csound-csd"> <CsoundSynthesizer> <CsOptions> csound -W -d -o tone.wav </CsOptions> <CsInstruments> sr = 96000 ; Sample rate. kr = 9600 ; Control signal rate. ksmps = 10 ; Samples per control signal. nchnls = 1 ; Number of output channels. instr 1 a1 oscil p4, p5, 1 ; Oscillator: p4 and p5 are the arguments from the score, 1 is the table number. out a1 ; Output. endin </CsInstruments> <CsScore> f1 0 8192 10 1 ; Table containing a sine wave. Built-in generator 10 produces a sum of sinusoids, here only one. i1 0 1 20000 1000 ; Play one second of one kHz at amplitude 20000. e </CsScore> </CsoundSynthesizer> </syntaxhighlight> As with many other programming languages, writing long programs in Csound can be eased by using an [[integrated development environment]] for editing, previewing, testing, and [[debugging]]. The one now officially supported is CsoundQt. It has many features, such as automatic code insertion, integrated documentation browser, integrated widgets for graphically controlling parameters in realtime, plus a button for playing the code. == Csound 5 == Version 5.01 was released on March 18, 2006, 20 years after Csound's first release. Csound 5 is available in binary and [[source code]] for [[Linux]], [[Microsoft Windows]], and [[macOS]] from the [[SourceForge]] Csound project.<ref>{{cite web|url=http://sourceforge.net/projects/csound/|title=Csound |website=SourceForge.net}}</ref> It is much improved and expanded compared to the original software, effectively made into a [[software library]] with an application programming interface ([[API]]). A variety of [[Frontend and backend|frontends]] have been developed for it. Beyond the basic [[C (programming language)|C]] API, there are also [[C++]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Lisp (programming language)|Lisp]], and [[Tcl]], among other bindings, like one from [[Haskell]] which allows control of Csound from a purely [[functional programming]] environment. The use of [[Plug-in (computing)|plug-ins]] allows added abilities without modifying the Csound code, as there is the possibility to write user-defined opcodes as extensions to the original language. Linux Audio Developer's Simple Plugin API ([[LADSPA]]) and [[Disposable Soft Synth Interface]] (DSSI) are supported, but [[Virtual Studio Technology]] (VST) support has been removed. In the 1990s was added real-time performance via Musical Instrument Digital Interface ([[MIDI]]), and support of Fast Light Toolkit ([[FLTK]]) widgets ([[graphical user interface]] components with sliders, knobs, etc.) to control real-time audio, and integrating custom graphical interfaces written in Python. == Csound 6 == The development of Csound 6 was led by [[John Fitch (computer scientist)|John Fitch]], Steven Yi and [[Victor Lazzarini]]. After its features were hashed out at the Csound Conference held in 2011 in Hanover, Csound 6 was released in July 2013 and made available on [[GitHub]].<ref>{{cite web|url=https://github.com/csound/csound|title=Csound |website=GitHub.com}}</ref> Csound 6 is also available for [[Android (operating system)|Android]]. The major new features of Csound 6 include: * A [[GNU bison|bison]]/[[Flex lexical analyser|flex]] based [[Parsing|parser]] for the Csound language is now standard. It generates an [[abstract syntax tree]] that is accessible via the Csound API. The tree can then be [[Compiler|compiled]] to a Csound performance runtime using the API. Therefore, after the tree has been compiled, it can be manipulated by user code before compiling it to a Csound performance runtime. Alternatively, the user could create the entire abstract syntax tree from another language, then compile the tree to a Csound performance runtime. * There is a new built-in multi-dimensional array type. Arrays can be passed to instruments and opcodes. Arithmetic may be performed directly on arrays. * There is a new type system that enables user-defined types to be used in the Csound language. * The orchestra can be re-compiled at any time, or individual instruments can be compiled at any time, during a running performance. This enables true "live coding" in Csound performances. * The Csound API has been rationalized and simplified. * Csound can take advantage of any number of CPUs for concurrent processing during performance. This occurs without any changes to Csound code. This produces substantial speedups of most Csound processing. For example, a piece that renders in 100 seconds with 1 core should render in about 50 seconds with 4 cores. * Csound can compile orchestras and scores directly from strings of text, enabling the use of Csound in environments where writing to the file system is not permitted. * Score events such as notes can be scheduled to sample accurate times, even if synthesis is processed in blocks of samples. * All opcodes that return a single value may be used as functions in the orchestra language. * Audio analysis file formats can be byte-order independent. * A single score statement can contain multiple string parameters. * Most oscillator opcodes will use an internal sine function table if the table number is omitted. * Command-line options can be set programmatically using the Csound API. * Numerous duplicate areas of code within Csound have been rationalized. * An Android app was built which provides user-defined graphical user interfaces and JavaScript-based algorithmic composition using HTML5. == Csound for live performance== Currently only Csound score or note events can be generated in [[Real-time computing|real time]] (in contrast to instruments, which are only definable at [[compile time]], when csound first starts; in Csound 6 this limit is removed). The set of sound processors is defined and compiled at load time, but the individual processing [[Object (computer science)|objects]] can be spawned or destroyed in real time, input audio processed in real time, and output generated also in real time. Note events can be triggered based on OSC communications within an instrument instance, spawned by MIDI, or entered to stdin (by typing into a terminal or sending textual statements from another program). The use of Csound 5 as a live performance tool can be augmented with a variety of third-party software. Live Event Sheet within CsoundQt can be used to modify the score in real-time. In addition, interfaces to other programming languages can be used to script Csound. A paper detailing the use of Csound with Qt or Pure Data in real-time musical synthesis was presented at the 2012 Linux Audio Conference <ref>{{cite web |url=http://lac.linuxaudio.org/2012/papers/10.pdf |title=Csound as a Real-time Application |author=Joachim Heintz |publisher=Institute for New Music}}</ref> The Ounk project attempts to integrate Python with Csound while CsoundAC provides a way to do [[algorithmic composition]] from Python using Csound as backend. Audivation's Csound for Live packages various opcodes into [[Max (software)|Max/MSP]] wrappers suitable for use in [[Ableton Live]].<ref>{{cite web |url=http://createdigitalmusic.com/2011/10/csound-for-live-the-power-of-csound-in-ableton-with-or-without-any-coding/ |title=Csound For Live wiki |author=Peter Kirn |date=15 October 2011 |publisher=Create Digital Music}}</ref><ref>{{cite web |url=http://www.synthtopia.com/content/2011/10/15/csound-for-live-coming-october-17th/ |title=Csound For Live Coming October 17th wiki |author=Synthhead |date=15 October 2011 |publisher=Synthtopia}}</ref> Csound is also available for mobile systems (iOS, Android).<ref>{{cite web |url=http://lac.linuxaudio.org/2012/papers/20.pdf |title=Csound for Android |author=S. Yi and V. Lazzarini}}</ref> == One Laptop per Child (OLPC) == Csound5 was chosen to be the audio/music development system for the [[One Laptop per Child]] (OLPC) project on the [[XO-1 Laptop]] platform.<ref>{{cite web |url=http://wiki.laptop.org/go/Csound |title=Csound on OLPC wiki |access-date=23 November 2010}}</ref> ==See also== {{Portal|Free and open-source software}} * [[Audio signal processing]] * [[Software synthesizer]] * [[Computer music]] * [[Comparison of audio synthesis environments]] * [[List of music software]] ==References== {{Reflist}} ==Further reading== * {{cite book |editor1-last=Boulanger |editor1-first=Richard Charles |year=2000 |title=The Csound Book: Perspectives in Software Synthesis, Sound Design, Signal Processing, and Programming |publisher=MIT Press |isbn=978-0-262-52261-8}} * {{cite book |last1=Bianchini |first1=R. |last2=Cipriani |first2=A. |year=2000 |title=Virtual Sound: Sound Synthesis and Signal Processing: Theory and Practice with Csound |publisher=ConTempo s.a.s |isbn=88-900261-1-1}} * {{cite book |editor1-last=Boulanger |editor1-first=Richard Charles |editor2-last=Lazzarini |editor2-first=Victor |year=2011 |title=The Audio Programming Book |publisher=MIT Press|isbn=978-0-262-01446-5}} This is a book mostly about programming sound directly using the C language, but it does have a couple of chapters about programming Csound opcodes. * {{cite book |last1=Aikin |first1=Jim |year=2013 |title=Csound Power! The Comprehensive Guide |publisher=Cengage Learning |isbn=1-4354-6005-7}} ==External links== * {{Official website|csound.com}} {{Computer music}} {{Authority control}} [[Category:Audio programming languages]] [[Category:Free audio software]] [[Category:Electronic music software]] [[Category:Software synthesizers]] <!-- Hidden categories below --> [[Category:Articles with example code]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Computer music
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:More footnotes needed
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)