# Csound

Csound es un lenguaje de programación de computadores orientado a crear, editar, analizar y componer música y sonido. Recibe ese nombre porque su compilador está programado en lenguaje C. Está estructurado en forma de instrumentos en un fichero de orquesta, especificados mediante operadores de síntesis y procesamiento del sonido. Estos instrumentos son activados y controlados desde un fichero de partitura. Para realizar su función, ambos ficheros (orquesta y partitura) son procesados por el compilador de Csound, obteniendo un sonido como resultado de las instrucciones programadas.
Funciona correctamente en máquinas pequeñas y lentas, aunque si se ejecuta en equipos más potentes, es posible utilizarlo en tiempo real, crear interfaces gráficas de usuario, y conectarlo a otros sistemas vía drivers, MIDI o red.
Csound es un software libre basado en código abierto, con licencia LGPL, totalmente modular y ampliable por el usuario. Csound está relacionado con el lenguaje para audio estructurado de MPEG-4, SAOL.

## Historia

El programa Csound tiene su origen en la década de los años 1970. Si bien Csound no existía como tal, Max Matthews recopiló algoritmos de generación de sonido y creó el lenguaje Music (más tarde Music1, Music2, Music3 y Music4). Las rutinas de Csound derivan de estos programas. durante 1964 y 1965, Godfrey Winham y Hubert Howe expandieron el Music4 en un nuevo programa llamado Music4B.
Con el avance de los computadores, las antiguas máquinas se quedaban obsoletas y había que desarrollar nuevas versiones. Por ejemplo Music4 y Music4B no se adaptan fácilmente a los nuevos computadores. Music4B se tradujo completamente al lenguaje Fortran para favorecer su transportabilidad a otros sistemas de computación. Howe escribió el nuevo programa Music4BF y posteriormente Howe y Winham lo alteraron y expandieron.
Después de algún tiempo Barry Vercoe desarrolló un sistema para el IBM System/360, este es el Music11. Es el primer programa de este tipo desarrollado para microcomputadores. Music11 es el antecesor directo de Csound, basado en el cual fue desarrollado por Barry Vercoe del MIT. Csound incrementa la flexibilidad de sus predecesores y puede además funcionar en cualquier sistema operativo que disponga de un compilador de C. Por ejemplo funciona tanto en MAC OS X, DOS/os, MS-Windows y Unix/Linux.
El Csound se hizo con la ayuda combinada de varios compositores interesados por la música y la informática. Son particularmente importantes las contribuciones de Richard Boulanger del Berklee College of Music (de Boston) y Barry Vercoe, graduado en el MIT, así como Dan Ellis y Bill Gardiner. Actualmente dispone de más de 1200 operadores, y siguen publicándose nuevas versiones de forma casi constante, con ampliaciones y mejoras de algoritmos.

## Funcionamiento del Csound

El funcionamiento del Csound (así como el de los programas Music1, Music2, etc.) es trabajar con dos clases de objetos relevantes en la composición.
Por un lado se debe crear la «orquesta» (en inglés orchestra), que se compone de los instrumentos que se utilizarán en la composición.
En Csound hay que crear los instrumentos, es decir, realizar una descripción completa de cómo son y cómo funcionan (cómo suenan): esto puede ir desde un oscilador que genere un tono puro (sinusoide) de un frecuencia determinada (de sonido similar a un diapasón real) a un instrumento complejo cuyo timbre varía estadísticamente.
Por otro lado está la partitura (en inglés score), que es el segundo objeto relevante. Esta no es más que una tabla o gráfica donde se especifica el orden de actuación de los instrumentos a lo largo del tiempo. Por ejemplo, el clarinete toca tal cosa mientras el timbal reverbera en una sala de tales características. Con Csound, el control sobre el sonido digital es absoluto (si se encuentra el programa adecuado).
Desde la versión 5.0, se da un cambio significativo en código de Csound. Aparecen características como: mejora de la gestión de "tiempo real", APIs para otros lenguajes de programación como Python o Lisp, Interfaces gráficas definidas por el usuario, protocolos de hosting a VST y LADSPA, protocolo OSC, opcodes definidas por el usuario y un gran número de nuevos opcodes de orquesta. Además en la versión para linux, se acopla perfectamente con jack.

## Ejemplo

Tal vez uno de los programas más sencillos que pueden escribirse en Csound, es la generación de un tono sinusoidal. Aunque Csound dispone ya de un formato de entrada de código compacta, mediante el formato csd que aúna instrumentos y control en un fichero único, la forma clásica de programar en Csound es a mediante dos archivos de texto. Uno que defina la orquesta (orc) y otro que describa la partitura (sco).
El programa que define la «orquesta» (en este caso de un solo instrumento, identificado como el número 1), podría ser así (lo que sigue a un carácter ";" es un comentario y, por tanto, no se ejecuta):
Por otra parte, hace falta una partitura que active y controle la actuación del instrumento 1 creado en el archivo de orquesta. Allí se dejaba sin dar valor concreto a la frecuencia, controlada con la variable 'p4' (parámetro 4). Ahora, en la llamada a la ejecución del instrumento, el parámetro n.º 4, dará precisamente el valor de frecuencia que se elija.
Dependiendo de la configuración con la que se ejecute Csound, este programa puede crear un archivo sonoro en el disco del computador o enviarse a su tarjeta de sonido para ser escuchado.

## Enlaces

* csounds.com (sitio del proyecto CSound).
* csounds.com/toots (tutorial de Richard Boulanger).
* CSounds.com/CSoundAV (proyecto CsoundAV, una versión audio-video para Windows).
* csounds.com/stevenyi//blue (Blue: interfaz gráfica multipista para Csound).
* geocities.com/mantaraya36 (tutorial audio/video para CsoundAV).
* lpi.tel.uva.es (Fenómenos acústicos a través de Csound)
* Asociación Asturiana de Electroacústica
* Csound blog con contenido concreto(Blog de Csound)
* Datos: Q259347
* Multimedia: Csound / Q259347