Csound es un lenguaje de programación informática específico para la programación de audio. Se llama Csound porque está escrito en C , a diferencia de algunos de sus predecesores.
Es software libre , disponible bajo la licencia LGPL-2.1 o posterior .
Csound fue escrito originalmente en el MIT por Barry Vercoe en 1985, basándose en su sistema anterior llamado Music 11, que a su vez siguió el modelo MUSIC-N iniciado por Max Mathews en los Laboratorios Bell. Su desarrollo continuó durante las décadas de 1990 y 2000, liderado por John Fitch en la Universidad de Bath. La primera versión documentada 5 es la versión 5.01 del 18 de marzo de 2006. Muchos desarrolladores han contribuido a ella, entre los que destacan Istvan Varga, Gabriel Maldonado, Robin Whittle, Richard Karpen, Iain McCurdy, Michael Gogins, Matt Ingalls, Steven Yi, Richard Boulanger , Victor Lazzarini y Joachim Heintz.
Desarrollado a lo largo de muchos años, actualmente cuenta con cerca de 1700 generadores de unidades . Una de sus mayores fortalezas es que es completamente modular y extensible por el usuario. Csound está estrechamente relacionado con el lenguaje subyacente para las extensiones de audio estructurado a MPEG-4 , SAOL .
Csound toma como entrada dos archivos de texto con un formato especial . La orquesta describe la naturaleza de los instrumentos y la partitura describe las notas y otros parámetros a lo largo de una línea de tiempo. Csound procesa las instrucciones de estos archivos y genera un archivo de audio o una secuencia de audio en tiempo real como salida.
Los archivos de orquesta y partitura se pueden unificar en un único archivo estructurado mediante etiquetas de lenguaje de marcado (un archivo CSD con extensión de nombre de archivo .csd). A continuación se muestra un ejemplo muy simple de un archivo de datos Csound unificado que produce un archivo de onda que contiene un tono de onda sinusoidal de un segundo de 1 kHz a una frecuencia de muestreo de 96 kHz:
<Sintetizador de sonido C> <CsOpciones> csound -W -d -o tono.wav </OpcionesCs> <CsInstruments> sr = 96000 ; Frecuencia de muestreo. kr = 9600 ; Frecuencia de señal de control. ksmps = 10 ; Muestras por señal de control. nchnls = 1 ; Número de canales de salida. instr 1 a 1 oscil p4 , p5 , 1 ; Oscilador: p4 y p5 son los argumentos de la partitura, 1 es el número de tabla. out a 1 ; Salida. endin </CsInstruments> <CsScore> f 1 0 8192 10 1 ; Tabla que contiene una onda sinusoidal. El generador incorporado 10 produce una suma de sinusoides, aquí sólo una. i 1 0 1 20000 1000 ; Reproduce un segundo de un kHz con una amplitud de 20000. e </CsScore> </Sintetizador de sonido>
Al igual que con muchos otros lenguajes de programación, escribir programas largos en Csound se puede facilitar mediante el uso de un entorno integrado para edición, vista previa, prueba y depuración . El que ahora cuenta con soporte oficial es CsoundQt, y tiene muchas características, como inserción automática de código, navegador de documentación integrado, widgets integrados para controlar gráficamente los parámetros en tiempo real, además de un botón para reproducir el código.
La versión 5.01 se lanzó el 18 de marzo de 2006, 20 años después del primer lanzamiento de csound. Csound 5 está disponible en binario y código fuente para Linux, Microsoft Windows y Mac OS X desde el proyecto Csound de SourceForge . [3] Es mucho mejor y más amplio en comparación con el software original, convertido efectivamente en una biblioteca de software con una API . Se han desarrollado una variedad de interfaces para él. Además de la API básica de C , también hay enlaces Python , Java , Lisp , Tcl y C++ entre otros, como uno de Haskell que permite el control de Csound desde un entorno puramente funcional.
El uso de complementos permite capacidades adicionales sin modificaciones del código de Csound, ya que existe la posibilidad de escribir códigos de operación definidos por el usuario como extensiones del lenguaje original. Se admiten LADSPA y DSSI , pero se ha eliminado la compatibilidad con VST .
La interpretación en tiempo real a través de MIDI se agregó en la década de 1990. Otra incorporación fue el soporte de widgets FLTK (componentes de interfaz gráfica con controles deslizantes, perillas, etc.) para controlar audio en tiempo real y la integración de interfaces gráficas personalizadas escritas en Python.
Csound 6 ha estado en desarrollo desde que se definieron sus características en la Conferencia Csound celebrada en 2011 en Hanover. Csound 6 se lanzó en julio de 2013 y ahora está disponible en GitHub . [4] Csound 6 también está disponible para Android . Las principales características nuevas de Csound 6 incluyen:
El desarrollo de Csound 6 fue dirigido por John Fitch , Steven Yi y Victor Lazzarini .
Actualmente, solo se pueden generar eventos de notas o partituras de Csound en tiempo real (a diferencia de los instrumentos, que solo se pueden definir en tiempo de compilación, cuando se inicia Csound por primera vez; en Csound 6, esta limitación se ha eliminado). El conjunto de procesadores de sonido se define y compila en el momento de la carga, pero los objetos de procesamiento individuales se pueden generar o destruir en tiempo real, el audio de entrada se puede procesar en tiempo real y la salida se puede generar también en tiempo real. Los eventos de notas se pueden activar en función de las comunicaciones OSC dentro de una instancia de instrumento, se pueden generar por MIDI o se pueden ingresar en la entrada estándar (escribiendo en una terminal o enviando declaraciones textuales desde otro programa). El uso de Csound 5 como herramienta de interpretación en vivo se puede aumentar con una variedad de software de terceros. La hoja de eventos en vivo dentro de CsoundQt se puede utilizar para modificar la partitura en tiempo real. Además, se pueden utilizar interfaces con otros lenguajes de programación para crear scripts de Csound. En la Conferencia de Audio Linux de 2012 se presentó un artículo que detalla el uso de Csound con Qt o Pure Data en la síntesis musical en tiempo real [5]. El proyecto Ounk intenta integrar Python con Csound, mientras que CsoundAC proporciona una forma de hacer composición algorítmica desde Python utilizando Csound como backend. Csound for Live de Audivation empaqueta varios códigos de operación en contenedores Max/MSP adecuados para su uso en Ableton Live . [6] [7] Csound también está disponible para sistemas móviles (iOS, Android). [8]
Se eligió Csound5 como sistema de desarrollo de audio/música para el proyecto OLPC en la plataforma portátil XO-1 . [9]