SuperCollider

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
SuperCollider
Desarrollador
James McCartney y otros
http://supercollider.sourceforge.net/
Información general
Género Entorno de desarrollo y lenguaje de programación de audio
Sistema operativo FreeBSD,[1] Linux, Mac OS X, Windows
Licencia GNU General Public License
En español No No

SuperCollider es un entorno y un lenguaje de programación originalmente públicado en 1996 por James McCartney para síntesis audio en tiempo real y composición algorítmica.[2] [3]

Desde entonces ha ido evolucionando hacia un sistema utilizado y desarrollado por los científicos y artistas que trabajan con el sonido. Se trata de un eficaz y expresivo lenguaje de programación dinámico que proporciona un marco para la investigación acústica,música algorítmica y programación interactiva.[4]

Publicado bajo los términos de la GNU Public License en 2002, SuperCollider es software libre. La versión principal más reciente (3.6.5) fue lanzado en Abril de 2013.[5]

Arquitectura[editar]

En la versión 3 el entorno SuperCollider fue dividido en 2 componentes: un servidor, scsynth; y un cliente, sclang. Estos componentes se comunican mediante OSC (Open Sound Control).[4]

El lenguaje de SuperCollider combina la estructura orientada a objetos de Smalltalk y características de programación funcional junto a la sintaxis de la familia del lenguaje de programación C.[4]

La aplicación de servidor de SuperCollider es compatible con una API simple de plugins de C por lo que es fácil escribir algoritmos eficientes de sonido, que luego se pueden combinar en los gráficos de los cálculos. Debido a que todo el control externo en el servidor pasa a través de OSC, es posible utilizarlo con otros lenguajes o aplicaciones. [4]

El servidor de síntesis SuperCollider (scsynth)[editar]

La generación de sonido de SuperCollider se incluye en un archivo ejecutable de línea de comandos optimizado (llamado scsynth). En la mayoría de los casos se controla desde dentro del lenguaje de programación SuperCollider, pero se puede utilizar de forma independiente. El servidor de audio tiene las siguientes características:[4]

  • Acceso a Open Sound Control
  • Una API simple de C
  • Compatible con cualquier número de canales de entrada y salida, incluyendo configuraciones de forma masiva multicanal[6]
  • Da acceso a un árbol ordenado de estructura de nodos de síntesis que definen el orden de ejecución
  • Sistema de bus que permite reestructurar dinámicamente el flujo de señal
  • Buffers para la escritura y la lectura
  • Cálculo a ritmos diferentes en función de las necesidades: Tasa de audio, tasa de control, la tasa de demanda

Supernova, una aplicación independiente de la arquitectura del servidor[7] añade soporte multi-procesador a través de la agrupación paralela explícita de nodos de síntesis.

El lenguaje de programación SuperCollider (sclang)[editar]

El lenguaje de programación SuperCollider es un lenguaje con tipado dinámico, recolector de basura, herencia simple, programación orientada a objetos y programación funcional. Es un lenguaje similar al Smalltalk, con una sintaxis similar a Ruby o el lenguaje de programación C. Su arquitectura establece un equilibrio entre las necesidades de computación en tiempo real y la flexibilidad y la sencillez de un lenguaje abstracto. Al igual que muchos lenguajes funcionales, implementa las funciones como objetos de primera clase, cuyo estado puede estar compuesto. Funciones y métodos pueden tener valores de los argumentos por defecto y de las listas de argumentos de longitud variable, usted puede comunicarse con cualquier orden de los argumentos de palabras clave. Los cierres son léxica, y el alcance es a la vez léxico y dinámico. Otras características típicas de los lenguajes funcionales son soportadas, incluyendo la creación de cierre a través de la aplicación parcial, optimización de la llamada final, las listas por comprensión y co-rutinas. Detalles específicos incluyen la ampliación implícita de tuplas y el sistema de patrón sin estado. Su recolección de basura real y la búsqueda constante de mensajes de tiempo permite a los sistemas grandes ser eficientes y manejar el procesamiento de señales flexiblemente.[4]

Por métodos de apoyo de programación reflexiva, interactiva y literal, SuperCollider hace que sea relativamente fácil de encontrar nuevos algoritmos de sonido[8] y desarrollar software a la medida, así como marcos personalizados. En lo que respecta al conocimiento de dominio específico, que es a la vez general (por ejemplo, que permite representar propiedades tales como el tiempo y el tono en grados variables de abstracción) y copiosa de implementaciones de ejemplo para fines específicos.[4]

Sistema de interfaz gráfica[editar]

El lenguaje SuperCollider permite a los usuarios construir interfaces gráficas de usuario multiplataforma para las aplicaciones. Los componentes del estándar de la biblioteca de clases con interfaz gráfica pueden extenderse por varios frameworks disponibles. Para la programación interactiva, el sistema admite el acceso mediante programación a ricos archivos de código de texto. Se puede utilizar para generar gráficos vectoriales algorítmicamente.[9]

Interfaz y soporte de sistemas[editar]

Clientes[editar]

Debido a que el servidor se controla usando Open Sound Control (OSC), una variedad de aplicaciones se puede utilizar para controlar el servidor. Los entornos del lenguaje SuperCollider (véase más adelante) son frecuentemente usados, pero otros sistemas OSC-aware pueden ser utilizados, como Pure data. [4]

Existen clientes "de terceros" para el servidor SuperCollider, incluyendo RSC3, un cliente del lenguaje de programación Scheme, HSC3, basado en Haskell, ScalaCollider,[10] basado en Scala., Y Overtone, basado en Clojure[11] Estos son distintos de los entornos de desarrollo se mencionan a continuación, ya que no proporcionan una interfaz para lenguaje de programación de SuperCollider, sino que se comunican directamente con el servidor de audio proporcionando sus propios enfoques para facilitar la expresión del usuario.[4]

Sistemas Operativos soportados[editar]

SuperCollider puede correr en Mac OS X, Linux, Windows y FreeBSD. La versión de windows, sin embargo, tiende a ir por detrás de los otros, ya que la mayoría del desarrollo se basa en Mac y Linux. Para cada uno de estos sistemas operativos hay múltiples entornos de edición del lenguaje y clientes que se pueden utilizar con SuperCollider (ver más abajo). [4]

También se ha demostrado que se puede ejecutar en SuperCollider iOS (sistema operativo)[12] y Android.[13]

Entornos de edición[editar]

Captura de Vim SuperCollider en Puredyne GNU/Linux.

La versión para Mac de SuperCollider es más comúnmente utilizado en el marco de su propia interfaz gráfica específica (Cocoa (informática)), en Windows y Linux, varios editores de texto y un número de entornos de desarrollo integrados comunes se puede utilizar, por ejemplo:

Para cada uno de los entornos listados anteriormente, un Plug-in permite la ejecución en tiempo real del código de SuperCollider y la interacción con el servidor de audio.

Los intentos anteriores de portar SuperCollider a Windows también han dado lugar a un entorno de desarrollo basado en Python llamado PsyCollider, y un plug-in para Eclipse, pero no se han actualizado recientemente. Sin embargo, un nuevo esfuerzo se lleva a cabo actualmente para desarrollar un IDE multiplataforma basado en el marco de Qt.[16]

Ejemplos de código[editar]

// Imprime  "Hello world!"
"Hello world!".postln;
// Reproduce una mezcla de un tono sinusoidal de 800 Hz y "ruido rosa" (PinkNoise)
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;
// Modula una frecuencia sinusoidal y una amplitud de ruido con otra sinusoidal
// Cuya frecuencia depende de la posición horizontal del puntero del ratón
{ 
	var x = SinOsc.ar(MouseX.kr(1, 100));
	SinOsc.ar(300 * x + 800, 0, 0.1) 
	+ 
	PinkNoise.ar(0.1 * x + 0.1) 
}.play;
// Lista de iteración: multiplica los elementos de una colección por sus índices
[1, 2, 5, 10, -3].collect { 
	arg elem, idx;
 	elem * idx;
};
// Función factorial
f = {
	arg x;
 	if(x == 0) { 1 } { f.(x-1) * x }
};

Codificación en Vivo[editar]

Como versátil lenguaje de programación dinámico, SuperCollider puede ser usado para Codificación en Vivo, es decir, las actuaciones que impliquen al intérprete modificar y ejecutar código sobre la marcha.[17] Tipos específicos de patrones proxies sirven como marcadores de posición de alto nivel de los objetos de síntesis que se puede conectar, desconectar y/o modificar durante la ejecución. Los Entornos permiten la compartición y/o modificación de los objetos y las declaraciones de los procesos a través de redes.[18] Varias bibliotecas de extensión dan soporte a diferentes para la abstracción y el acceso a los objetos de sonido, por ejemplo, dewdrop_lib[19] permitiendo la creación en vivo y modificación de pseudo-clases y objetos.

Referencias[editar]

  1. SourceForge.net: Files
  2. J. McCartney, SuperCollider: A new real time synthesis language, in Proc. International Computer Music Conference (ICMC’96), 1996, pp. 257–258.
  3. J. McCartney, Rethinking the computer music language: SuperCollider, Computer Music Journal, 26 (2002), pp. 61–68.
  4. a b c d e f g h i j Scott Wilson; David Cottle; Nick Collins (2011). The SuperCollider Book. The MIT Press. ISBN 978-0-262-23269-2. 
  5. Página de descargas de SuperCollider
  6. herramientas BEASTmulch de audio multicanal
  7. T. Blechmann, supernova, a multiprocessor-aware synthesis server for SuperCollider, Proceedings of the Linux Audio Conference, Utrecht 2010.
  8. J. Rohrhuber, A. de Campo and Renate Wieser. Algorithms Today. Notes on Language Design for Just in Time Programming. In Proceedings of the International Computer Music Conference, Barcelona, 2005.
  9. La interfaz gráfica de vectores se proporciona por medio de la clase Pen. Varios ejemplos se pueden encontrar en Audiovisuals by SC, blog by Fredrik Olofsson, 02.05.2009 (updated 11.05.2012)
  10. Rutz, H. H. (2010). «Rethinking the SuperCollider Client...». Proceedings of SuperCollider Symposium. Berlin. 
  11. More examples on the SuperCollider wiki
  12. Tiny Music System - Cylob Blog, 04.11.2009
  13. SuperCollider Android project on GitHub
  14. SuperCollider with emacs: scel
  15. Scate project
  16. Cyberpipe @ Slovenia & the future SuperCollider development - announcement on the SuperCollider user mailing list, 22.02.2012
  17. Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), Live Coding Techniques for Laptop Performance, Organised Sound 8(3): pp 321-30. doi 10.1017/S135577180300030X
  18. J. Rohrhuber and A. de Campo. Waiting and uncertainty in computer music networks. In Proceedings of the International Computer Music Conference, Miami, 2004.
  19. One of the numerous user contributed libraries known as "Quarks", and published in the SuperCollider Quarks repository.

Enlaces externos[editar]