De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

SuperCollider es un entorno y lenguaje de programación lanzado originalmente en 1996 por James McCartney para síntesis de audio en tiempo real y composición algorítmica . [4] [5]

Desde entonces, ha ido evolucionando hasta convertirse en un sistema utilizado y desarrollado por científicos y artistas que trabajan con el sonido. Es un lenguaje de programación dinámico eficiente y expresivo que proporciona un marco para la investigación acústica , la música algorítmica , la programación interactiva y la codificación en vivo .

Lanzado bajo los términos de la GPLv 2 en 2002, SuperCollider es un software gratuito y de código abierto .

Arquitectura [ editar ]

A partir de la versión 3, el entorno de SuperCollider se ha dividido en dos componentes: un servidor , scsynth ; y un cliente , sclang . Estos componentes se comunican mediante OSC ( Open Sound Control ). [6]

El lenguaje SC combina la estructura orientada a objetos de Smalltalk y características de los lenguajes de programación funcionales con un C -family sintaxis . [6]

La aplicación SC Server es compatible con las API de complementos C y C ++ simples, lo que facilita la escritura de algoritmos de sonido eficientes ( generadores de unidades ), que luego se pueden combinar en gráficos de cálculos. Debido a que todo el control externo en el servidor se realiza a través de OSC, es posible utilizarlo con otros lenguajes o aplicaciones. [6]

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

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

  • Acceso abierto al control de sonido
  • API de complementos ANSI C y C ++ 11 simples
  • Admite cualquier número de canales de entrada y salida, incluidas configuraciones masivamente multicanal [7]
  • Da acceso a una estructura de árbol ordenada de nodos de síntesis que definen el orden de ejecución.
  • Sistema de bus que permite reestructurar dinámicamente el flujo de señales
  • Tampones para escribir y leer
  • Cálculo a diferentes tasas según las necesidades: tasa de audio, tasa de control, tasa de demanda

Supernova, una implementación independiente de la arquitectura del servidor, [8] agrega soporte multiprocesador a través del agrupamiento paralelo explícito de nodos de síntesis.

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

El lenguaje de programación SuperCollider es una de tipos dinámicos , recolección de basura , single-herencia orientada a objetos y funcional lenguaje similar al Smalltalk , [5] con una sintaxis similar a Lisp o el lenguaje de programación C . Su arquitectura logra un equilibrio entre las necesidades de la computación en tiempo real y la flexibilidad y simplicidad de un lenguaje abstracto. Como muchos lenguajes funcionales, implementa funciones como objetos de primera clase , que pueden estar compuestos. Las funciones y los métodos pueden tener valores de argumento predeterminados y listas de argumentos de longitud variable y se pueden llamar con cualquier orden de argumentos de palabra clave. Los cierres son léxicos y el alcance es tanto léxico como dinámico. Se admiten otras características típicas de los lenguajes funcionales, incluida la creación de cierres mediante aplicación parcial ( currización explícita ), optimización de llamadas de cola , comprensión de listas y corrutinas . Los detalles incluyen la expansión implícita de tuplas y el sistema de patrones sin estado. Su búsqueda de mensajes en tiempo constante y la recolección de basura en tiempo real permiten que los grandes sistemas sean eficientes y manejen el procesamiento de señales de manera flexible. [6]

Al admitir métodos de programación reflexiva , conversacional y alfabetizada , SuperCollider hace que sea relativamente fácil encontrar nuevos algoritmos de sonido [9] y desarrollar software personalizado, así como marcos personalizados. Con respecto al conocimiento específico del dominio, es tanto general (por ejemplo, permite la representación de propiedades como el tiempo y el tono en grados variables de abstracción) y tiene abundantes implementaciones de ejemplo para propósitos específicos. [6]

Sistema GUI [ editar ]

Captura de pantalla de SuperCollider ejecutando las herramientas GUI de ixiQuarks.

El lenguaje SuperCollider permite a los usuarios construir interfaces gráficas de usuario multiplataforma para aplicaciones. La biblioteca de clases estándar con componentes de interfaz de usuario puede ampliarse con varios marcos disponibles. Para la programación interactiva, el sistema admite el acceso mediante programación a archivos de código de texto enriquecido. Puede usarse para generar gráficos vectoriales algorítmicamente. [10]

Soporte de interfaz y sistema [ editar ]

Clientes [ editar ]

Debido a que el servidor se controla mediante Open Sound Control (OSC), se pueden utilizar diversas aplicaciones para controlar el servidor. Normalmente se utilizan entornos de lenguaje SuperCollider (ver más abajo), pero se pueden utilizar otros sistemas compatibles con OSC, como Pure Data . [6]

Existen clientes "de terceros" para el servidor SuperCollider, incluido rsc3, un cliente Scheme , hsc3, basado en Haskell , ScalaCollider, [11] basado en Scala , Overtone, basado en Clojure y Sonic Pi . [12] Estos son distintos de los entornos de desarrollo mencionados a continuación porque no proporcionan una interfaz para el lenguaje de programación de SuperCollider, sino que se comunican directamente con el servidor de audio y proporcionan sus propios enfoques para facilitar la expresión del usuario. [6]

Sistemas operativos compatibles [ editar ]

Captura de pantalla de SuperCollider en Mac OS X con varios elementos GUI generados por el usuario.

SuperCollider se ejecuta en macOS , Linux , Windows y FreeBSD . Para cada uno de estos sistemas operativos, existen múltiples entornos de edición de idiomas y clientes que se pueden usar con SuperCollider (ver más abajo). [6]

También se ha demostrado que SuperCollider puede ejecutarse en Android [13] e iOS . [14]

Editando entornos [ editar ]

Captura de pantalla de SuperCollider Vim en puredyne linux .

El código de SuperCollider se edita y usa con mayor frecuencia desde su propio IDE multiplataforma (que admite Linux, Mac y Windows).

Otros entornos de desarrollo con soporte SuperCollider incluyen:

  • Emacs (Linux, Mac, Windows) [15]
  • Vim (Linux, Mac)
  • Atom (Linux, Mac, Windows) [16]
  • gedit (Linux, Windows)
  • Kate (Linux) [17]

Ejemplos de código [ editar ]

// Imprimir "¡Hola mundo!" "¡Hola Mundo!" . postln ;
// Reproduce una mezcla de un tono sinusoidal de 800 Hz y ruido rosa {  SinOsc . ar ( 800 ,  0 ,  0.1 )  +  Ruido rosa . ar ( 0,01 )  }. jugar ;
// Modular una frecuencia sinusoidal y una amplitud de ruido con otro seno // cuya frecuencia depende de la posición horizontal del puntero del mouse {  var  x  =  SinOsc . ar ( MouseX . kr ( 1 ,  100 )); SinOsc . ar ( 300  *  x  +  800 ,  0 ,  0.1 )  +  Ruido rosa . ar ( 0,1  *  x  +  0.1 );  }. jugar ;
// Iteración de lista: multiplica los elementos de una colección por sus índices [ 1 ,  2 ,  5 ,  10 ,  - 3 ]. recoger  {  | elem ,  idx |  elem  *  idx  };
// Función factorial f  =  {  | x |  si ( x  ==  0 )  {  1  }  {  f . ( x - 1 )  *  x  }  };

Codificación en vivo [ editar ]

Como un lenguaje de programación dinámico versátil , SuperCollider se puede utilizar para codificación en vivo , es decir, actuaciones en las que el intérprete modifica y ejecuta el código sobre la marcha. [18] Tipos específicos de proxies sirven como marcadores de posición de alto nivel para objetos de síntesis que pueden intercambiarse o modificarse en tiempo de ejecución. Los entornos permiten compartir y modificar objetos y declaraciones de procesos a través de redes. [19] Varias bibliotecas de extensión soportan diferentes abstracciones y accesos a objetos de sonido, por ejemplo, dewdrop_lib [20] permite la creación y modificación en vivo de pseudo-clases y pseudo-objetos.

Ver también [ editar ]

  • Lista de software de música
  • Comparación de entornos de síntesis de audio

Referencias [ editar ]

  1. ^ "Lanzamientos" . Github . Consultado el 15 de noviembre de 2020 .
  2. ^ asynth. "SuperCollider" . Consultado el 20 de junio de 2015 .
  3. ^ "COPIANDO" . Github . Consultado el 16 de septiembre de 2019 .
  4. ^ J. McCartney, SuperCollider: Un nuevo lenguaje de síntesis en tiempo real , en Proc. Conferencia Internacional de Música por Computadora (ICMC'96), 1996, págs. 257–258.
  5. ^ a b J. McCartney, Repensar el lenguaje musical de la computadora: SuperCollider , Computer Music Journal, 26 (2002), págs. 61–68.
  6. ^ a b c d e f g h i Scott Wilson; David Cottle; Nick Collins (2011). El libro SuperCollider . La prensa del MIT. ISBN 978-0-262-23269-2. Archivado desde el original el 1 de mayo de 2011 . Consultado el 26 de mayo de 2011 .
  7. ^ "Listas de distribución de SuperCollider" . Archivado desde el original el 6 de noviembre de 2009 . Consultado el 20 de junio de 2015 .
  8. ^ T. Blechmann, supernova, un servidor de síntesis con reconocimiento de multiprocesador para SuperCollider , Proceedings of the Linux Audio Conference, Utrecht 2010.
  9. ^ J. Rohrhuber, A. de Campo y Renate Wieser. Algoritmos hoy. Notas sobre el diseño del lenguaje para la programación Just in Time Archivado el 28 de julio de 2011 en la Wayback Machine . En Actas de la International Computer Music Conference , Barcelona, ​​2005.
  10. ^ La interfaz de gráficos vectoriales la proporciona la clase Pen. Se pueden encontrar varios ejemplos en Audiovisuales con SC , blog de Fredrik Olofsson, 02.05.2009 (actualizado 11.05.2012)
  11. ^ Rutz, HH (2010). "Repensar el cliente SuperCollider ...". Actas del Simposio SuperCollider . Berlina. CiteSeerX 10.1.1.186.9817 . 
  12. ^ "Sistemas que interactúan con SC" . Consultado el 20 de junio de 2015 .
  13. ^ Proyecto de Android SuperCollider en GitHub
  14. ^ Tiny Music System - Blog de Cylob, 11/04/2009
  15. ^ "SuperCollider con emacs: scel" . Consultado el 20 de junio de 2015 .
  16. ^ "supercollider" . Atom . Consultado el 20 de junio de 2015 .
  17. ^ "jleben / Scate" . GitHub . Consultado el 20 de junio de 2015 .
  18. ^ Collins, N., McLean, A., Rohrhuber, J. y Ward, A. (2003), Técnicas de codificación en vivo para el rendimiento de una computadora portátil, Sonido organizado 8 (3): págs. 321-30. doi : 10.1017 / S135577180300030X
  19. ^ J. Rohrhuber y A. de Campo. Espera e incertidumbre en las redes informáticas de música . En Actas de la Conferencia Internacional de Música por Computadora , Miami, 2004.
  20. ^ Una de las numerosas bibliotecas aportadas por los usuarios conocida como "Quarks" y publicada en el repositorio de SuperCollider Quarks .

Enlaces externos [ editar ]

  • Página web oficial