Articulo de referencia

Sonido C

[http://csound.com/csound30/papersessions.pdf Dr. Richard Boulanger - Three Decades with Csound: The Roots, Birth, and Early Years] "},"latest release version":{"wt":"6.18.1"},"...

Csound es un lenguaje de programación 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 y de código abierto , distribuido bajo la Licencia Pública General Reducida de GNU (LGPL) 2.1 o posterior.

Historia

Csound fue desarrollado originalmente por Barry Vercoe en el MIT Media Lab en 1985, [ 3 ] basado en su sistema anterior llamado Music 11, que a su vez seguía el modelo MUSIC-N iniciado por Max Mathews en Bell Labs . El desarrollo de Csound continuó a lo largo de las décadas de 1990 y 2000, liderado por John Fitch en la Universidad de Bath.

Muchos desarrolladores han contribuido a Csound, 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, a fecha de 2024Cuenta con casi 1700 generadores unitarios . Una de sus mayores ventajas es que es completamente modular y ampliable por el usuario.

Csound está estrechamente relacionado con el lenguaje subyacente de las extensiones de audio estructurado para MPEG-4 , el lenguaje de orquesta de audio estructurado (SAOL).

Código Csound

Csound recibe como entrada dos archivos de texto con 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 como salida un archivo de audio o una transmisión de audio en tiempo real.

Los archivos de orquesta y partitura se pueden unificar en un único archivo estructurado mediante etiquetas de lenguaje de marcado (un archivo CSD con la extensión .csd). A continuación, se muestra un ejemplo muy sencillo de un archivo de datos Csound unificado que genera un archivo de onda con un tono sinusoidal de un segundo a 1 kHz y una frecuencia de muestreo de 96  kHz:

<CsoundSynthesizer><OpcionesCs> 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í solo una. i 1 0 1 20000 1000 ; Reproduce un segundo de un kHz con una amplitud de 20000. e </CsScore></CsoundSynthesizer>

Al igual que con muchos otros lenguajes de programación, escribir programas largos en Csound se facilita mediante el uso de un entorno de desarrollo integrado para editar, previsualizar, probar y depurar . El que ahora cuenta con soporte oficial es CsoundQt. Ofrece numerosas funciones, como la inserción automática de código, un navegador de documentación integrado, widgets integrados para controlar gráficamente los parámetros en tiempo real y un botón para reproducir el código.

Csound 5

La versión 5.01 se publicó 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 macOS desde el proyecto SourceForge Csound. [ 4 ] Está mucho más mejorado y ampliado que el software original, convertido efectivamente en una biblioteca de software con una interfaz de programación de aplicaciones ( API ). Se han desarrollado varios frontends para él. Además de la API básica de C , también hay enlaces para C++ , Java , Python , Lisp y Tcl , entre otros, como uno de Haskell que permite controlar Csound desde un entorno de programación puramente funcional .

El uso de complementos permite añadir funcionalidades sin modificar el código de Csound, ya que es posible escribir códigos de operación definidos por el usuario como extensiones del lenguaje original. Se admiten la API de complementos simples para desarrolladores de audio de Linux ( LADSPA ) y la interfaz de sintetizador virtual desechable (DSSI), pero se ha eliminado la compatibilidad con la tecnología de estudio virtual (VST).

En la década de 1990 se añadió la interpretación en tiempo real mediante la Interfaz Digital de Instrumentos Musicales ( MIDI ), y la compatibilidad con los widgets de Fast Light Toolkit ( FLTK ) ( componentes de interfaz gráfica de usuario con deslizadores, perillas, etc.) para controlar el audio en tiempo real, así como la integración de interfaces gráficas personalizadas escritas en Python.

Csound 6

El desarrollo de Csound 6 fue liderado por John Fitch , Steven Yi y Victor Lazzarini . Tras definir sus características en la Conferencia Csound celebrada en 2011 en Hannover, Csound 6 se lanzó en julio de 2013 y se puso a disposición en GitHub . [ 5 ] Csound 6 también está disponible para Android . Las principales novedades de Csound 6 incluyen:

  • El analizador sintáctico basado en Bison / Flex para el lenguaje Csound ahora es estándar. Genera un árbol de sintaxis abstracta accesible a través de la API de Csound. Este árbol se puede compilar a un entorno de ejecución de alto rendimiento de Csound mediante la API. Por lo tanto, una vez compilado, el código del usuario puede manipularlo antes de compilarlo a un entorno de ejecución de alto rendimiento de Csound. Como alternativa, el usuario podría crear el árbol de sintaxis abstracta completo desde otro lenguaje y luego compilarlo a un entorno de ejecución de alto rendimiento de Csound.
  • Se ha añadido un nuevo tipo de matriz multidimensional integrada. Las matrices se pueden pasar a instrumentos y códigos de operación. Se pueden realizar operaciones aritméticas directamente sobre las matrices.
  • Existe un nuevo sistema de tipos que permite utilizar tipos definidos por el usuario en el lenguaje Csound.
  • La orquesta puede recompilarse en cualquier momento, o los instrumentos individuales pueden compilarse en cualquier momento durante una interpretación en curso. Esto permite una verdadera "programación en vivo" en las interpretaciones de Csound.
  • La API de Csound ha sido racionalizada y simplificada.
  • Csound puede aprovechar cualquier número de CPU para el procesamiento concurrente durante la reproducción. Esto ocurre sin necesidad de modificar el código de Csound. Esto genera mejoras sustanciales en la velocidad de la mayoría de los procesos de Csound. Por ejemplo, una pieza que se renderiza en 100 segundos con 1 núcleo debería renderizarse en aproximadamente 50 segundos con 4 núcleos.
  • Csound puede compilar orquestas y partituras directamente a partir de cadenas de texto, lo que permite utilizar Csound en entornos donde no está permitido escribir en el sistema de archivos.
  • Los eventos de la partitura, como las notas, pueden programarse para que se registren en momentos precisos, incluso si la síntesis se procesa en bloques de muestras.
  • En el lenguaje de orquesta, todos los códigos de operación que devuelven un único valor pueden utilizarse como funciones.
  • Los formatos de archivo para análisis de audio pueden ser independientes del orden de bytes.
  • Una única instrucción de puntuación puede contener múltiples parámetros de cadena.
  • La mayoría de los códigos de operación del oscilador utilizarán una tabla de funciones sinusoidales interna si se omite el número de tabla.
  • Las opciones de línea de comandos se pueden configurar mediante programación utilizando la API de Csound.
  • Se han racionalizado numerosas áreas de código duplicadas dentro de Csound.
  • Se desarrolló una aplicación para Android que proporciona interfaces gráficas de usuario definidas por el usuario y composición algorítmica basada en JavaScript utilizando HTML5.

Csound para actuaciones en directo

Actualmente, solo se pueden generar eventos de partitura o notas de Csound en tiempo real (a diferencia de los instrumentos, que solo se definen en tiempo de compilación , cuando se inicia Csound por primera vez; en Csound 6 se elimina esta limitación). El conjunto de procesadores de sonido se define y compila en tiempo de carga, pero los objetos de procesamiento individuales se pueden crear o destruir en tiempo real, el audio de entrada se procesa en tiempo real y la salida se genera también en tiempo real. Los eventos de notas se pueden activar mediante comunicaciones OSC dentro de una instancia de instrumento, crear mediante MIDI o introducir en la entrada estándar (escribiendo en una terminal o enviando instrucciones de texto desde otro programa). El uso de Csound 5 como herramienta de interpretación en vivo se puede ampliar con una variedad de software de terceros. Live Event Sheet dentro de CsoundQt se puede usar para modificar la partitura en tiempo real. Además, se pueden usar interfaces con otros lenguajes de programación para programar Csound. En la Conferencia de Audio Linux de 2012 se presentó un artículo que detallaba el uso de Csound con Qt o Pure Data en la síntesis musical en tiempo real [ 6 ]. El proyecto Ounk intenta integrar Python con Csound, mientras que CsoundAC proporciona una forma de realizar composición algorítmica desde Python utilizando Csound como backend. Csound for Live de Audivation empaqueta varios códigos de operación en envoltorios de Max/MSP adecuados para su uso en Ableton Live . [ 7 ] [ 8 ] Csound también está disponible para sistemas móviles (iOS, Android). [ 9 ]

Un ordenador portátil por niño (OLPC)

Csound5 fue elegido como sistema de desarrollo de audio/música para el proyecto One Laptop per Child (OLPC) en la plataforma de portátiles XO-1 . [ 10 ]

Véase también

Referencias

  1. Dr. Richard Boulanger - Tres décadas con Csound: Orígenes, nacimiento y primeros años
  2. "Versiones: csound/csound" . GitHub.com . Consultado el 11 de febrero de 2023 .
  3. Vail, Mark (2014). El sintetizador . Oxford University Press . pág. 102. ISBN  978-0195394894.
  4. "Csound" . SourceForge.net . 3 de mayo de 2016.
  5. "Csound" . GitHub.com .
  6. Joachim Heintz. "Csound como aplicación en tiempo real" (PDF) . Instituto de Música Nueva.
  7. Peter Kirn (15 de octubre de 2011). "Csound For Live wiki" . Crear música digital.
  8. Synthhead (15 de octubre de 2011). "Csound For Live llega el 17 de octubre wiki" . Synthtopia.
  9. S. Yi y V. Lazzarini. "Csound para Android" (PDF) .
  10. "Csound en la wiki de OLPC" . Consultado el 23 de noviembre de 2010 .

Lecturas adicionales

  • Boulanger, Richard Charles, ed. (2000). The Csound Book: Perspectives in Software Synthesis, Sound Design, Signal Processing, and Programming . MIT Press. ISBN 978-0-262-52261-8.
  • Bianchini, R.; Cipriani, A. (2000). Sonido virtual: síntesis de sonido y procesamiento de señales: teoría y práctica con Csound . ConTempo sas ISBN 88-900261-1-1.
  • Boulanger, Richard Charles; Lazzarini, Victor, eds. (2011). El libro de programación de audio . MIT Press. ISBN 978-0-262-01446-5.Este libro trata principalmente sobre la programación de sonido directamente utilizando el lenguaje C, pero también incluye un par de capítulos sobre la programación de códigos de operación de Csound.
  • Aikin, Jim (2013). ¡ El poder del sonido! La guía completa . Cengage Learning. ISBN 978-1-4354-6005-8.
  • Sitio web oficial
Obtenido de " https://en.wikipedia.org/w/index.php?title=Csound&oldid=1333278809 "