Articulo de referencia

Supercolisionador

{{cite web |title=Releases |url=https://github.com/supercollider/supercollider/releases |website=Github |access-date=26 July 2025}} "},"repo":{"wt":"{{URL|https://github.com/sup...

SuperCollider es un entorno y lenguaje de programación de audio 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 evolucionado hasta convertirse en un sistema utilizado y desarrollado por científicos y artistas que trabajan con el sonido. Se trata de un lenguaje de programación dinámico que proporciona un marco para la investigación acústica , la música algorítmica , la programación interactiva y la codificación en tiempo real .

Lanzado originalmente bajo los términos de la licencia GPL-2.0 o posterior en 2002, y a partir de la versión 3.4 bajo la licencia GPL-3.0 o posterior , SuperCollider es un software libre y de código abierto .

Arquitectura

A partir de la versión 3, el entorno 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 funcional con una sintaxis de la familia C. [ 6 ]

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

El servidor de síntesis SuperCollider ( scsynth )

La generación de sonido de SuperCollider está integrada 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 de SuperCollider, pero puede utilizarse de forma independiente. El servidor de audio tiene las siguientes características: [ 6 ]

  • Acceso a Open Sound Control
  • API de complementos sencillas para ANSI C y C++11
  • Admite cualquier número de canales de entrada y salida, incluidas configuraciones multicanal masivas [ 7 ].
  • Proporciona 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.
  • Búferes para escritura y lectura
  • Cálculo a diferentes velocidades según las necesidades: velocidad de audio, velocidad de control, velocidad de demanda.

Supernova, una implementación independiente de la arquitectura Server, [ 8 ] agrega soporte para multiprocesadores a través de la agrupación paralela explícita de nodos de síntesis.

El lenguaje de programación SuperCollider ( sclang )

El lenguaje de programación SuperCollider es un lenguaje funcional , orientado a objetos, de herencia simple , con tipado dinámico y recolección de basura , similar a Smalltalk , [ 5 ] con una sintaxis parecida a la de Lisp o 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. Al igual que muchos lenguajes funcionales, implementa funciones como objetos de primera clase, que pueden ser compuestos . Las funciones y los métodos pueden tener valores de argumentos predeterminados y listas de argumentos de longitud variable, y pueden ser llamados con cualquier orden de argumentos de palabra clave. Los cierres son léxicos, y el ámbito es tanto léxico como dinámico. Se admiten otras características típicas de los lenguajes funcionales, como la creación de cierres mediante aplicación parcial ( currying explícito ), optimización de llamadas recursivas , comprensiones de listas y corrutinas . Entre las particularidades se 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 sistemas grandes sean eficientes y manejen el procesamiento de señales de forma flexible. [ 6 ]

Al admitir métodos de programación reflexiva , conversacional y literaria , SuperCollider facilita la búsqueda de nuevos algoritmos de sonido [ 9 ] y el desarrollo de software y marcos de trabajo personalizados. En cuanto al conocimiento específico del dominio, es general (por ejemplo, permite la representación de propiedades como el tiempo y el tono con distintos grados de abstracción) y cuenta con numerosas implementaciones de ejemplo para fines específicos. [ 6 ]

Sistema GUI

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 mediante diversos marcos de trabajo disponibles. Para la programación interactiva, el sistema admite el acceso programático a archivos de código enriquecido. Puede utilizarse para generar gráficos vectoriales algorítmicamente. [ 10 ]

Interfaz y soporte del sistema

Clientela

Dado que el servidor se controla mediante Open Sound Control (OSC), se pueden utilizar diversas aplicaciones para controlarlo. Normalmente se utilizan entornos de lenguaje SuperCollider (véase más abajo), pero también se pueden utilizar otros sistemas compatibles con OSC, como Pure Data . [ 6 ]

Existen clientes de terceros para el servidor SuperCollider, entre ellos rsc3, un cliente Scheme , hsc3, basado en Haskell , ScalaCollider, [ 11 ] basado en Scala , Overtone, basado en Clojure , y Sonic Pi . [ 12 ] Estos se distinguen 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 ofrecen sus propios métodos para facilitar la expresión del usuario. [ 6 ]

Sistemas operativos compatibles

Captura de pantalla de SuperCollider en Mac OS X con varios elementos de interfaz gráfica generados por el usuario.

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

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

Entornos de edición

Captura de pantalla de SuperCollider Vim en puredyne linux .

El código de SuperCollider se edita y utiliza con mayor frecuencia desde su propio entorno de desarrollo integrado (IDE) multiplataforma, que está basado en Qt y es compatible con Linux, Mac y Windows.

Otros entornos de desarrollo compatibles con SuperCollider incluyen:

Ejemplos de código

// reproduce una mezcla de ruido rosa y un tono sinusoidal de 800 Hz { SinOsc . ar ( 800 , 0 , 0.1 ) + PinkNoise . ar ( 0.01 ) }. play ;// Modula la frecuencia del tono sinusoidal y la amplitud de la señal de ruido con otra señal 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 ; )
// Iteración de lista: multiplica los elementos de una colección por sus índices [ 1 , 2 , 5 , 10 , - 3 ]. collect { | elem , idx | elem * idx };
// Función factorial f = { | x | if ( x == 0 ) { 1 } { f .( x - 1 ) * x } };
// «Emulación Pan Sonic - Katodivaihe - lahetys» - Miguel Negrão ( { var a , b , c , d , n , e , f , out ;a = Impulso . ar ( 8 ) * 1.5 ;b = WhiteNoise.ar * Env ( [ 1.0 , 1.0 , 0.0 ] , [ 0.01 , 0.01 ] , \ step ) .ar ( 0 , Impulse.ar ( 1 ) ) ; b = FreeVerb.ar ( b , 0.5 , 0.4 ) * 2.5 ;c = SinOsc . ar ( 40 ) * Env . perc ( 0.01 , 0.2 ). ar ( 0 , TDuty . ar ( Dseq ([ 1 / 4 , 1 / 2 , 1 / 8 , 1 / 8 ], inf ))); 5 . do { c = ( c . distort + c ) * 0.75 }; c = c * 1.5 ;d = LPF . ar ( Saw . ar ([ 20 , 47 ] ). suma , XLine . ar ( 4000 , 200 , 0.5 )) * Env . perc . ar ( 0 , Impulso . ar ( 1/16 ) ) * 0,5 ;d = ( GVerb . ar ( d , tamaño de la habitación : 10 , tiempo de revolución : 6 ) * 200 ). recorte ( -1,0 , 1,0 ) * 0,3 ;norte = 12 ; e = ( Saw . ar ( 40 * ( 1 .. n ) * ({ LFNoise1 . ar ( 0.1 ). rango ( 1 , 1.01 ) } ! n ) ) * ({ LFNoise1 . ar ( 0.1 ). rango ( 0.0 , 1.0 ) } ! n )). suma * 10 ; e = PeineC . ar ( mi , 0,1 , 0,1 , 4 ) + mi ; mi = mi . tanh * 0,3 * SinOsc . ar ( 0,05 ). rango ( 0,5 , 1,0 ); mi = mi . duplicar ; mi = mi * SinOsc . ar ( 0,03 ). rango ( 0.2 , 1.0 ) * 0.5 ;f = Blip . ar ( 100 ) * Blip . ar ( 100 ) * Env ([ 0.0 , 0.0 , 1.0 ],[ 8 , 8 ],[ \step , \linear , \step ]) . ar ( 0 , Impulse . ar ( 1 / 16 )) * 2 ;salida = (( a + b + c + f ) ! 2 ) + d + e ; salida = salida * 0.2}. jugar )

Programación en vivo

Como lenguaje de programación dinámico y versátil , SuperCollider puede utilizarse para codificación en vivo , es decir, actuaciones en las que el intérprete modifica y ejecuta 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 admiten diferentes abstracciones y acceso a objetos de sonido, por ejemplo, dewdrop_lib [ 20 ] permite la creación y modificación en vivo de pseudoclases y pseudoobjetos.

Véase también

Referencias

  1. "Versiones" . Github . Consultado el 26 de julio de 2025 .
  2. asynth. "SuperCollider" . Consultado el 20 de junio de 2015 .
  3. "Licencias de SuperCollider" . Archivado del original el 7 de agosto de 2020.
  4. J. McCartney, SuperCollider: Un nuevo lenguaje de síntesis en tiempo real , en Proc. International Computer Music Conference (ICMC'96), 1996, pp. 257–258.
  5. 1 2 J. McCartney, Repensando el lenguaje de la música por computadora: SuperCollider , Computer Music Journal, 26 (2002), pp. 61–68.
  6. 1 2 3 4 5 6 7 8 9 Scott Wilson; David Cottle; Nick Collins (2011). El libro del supercolisionador . The MIT Press. ISBN 978-0-262-23269-2Archivado del original el 1 de mayo de 2011. Consultado el 26 de mayo de 2011 .
  7. "Listas de correo de SuperCollider" . Archivado del original el 6 de noviembre de 2009. Consultado el 20 de junio de 2015 .
  8. T. Blechmann, supernova, un servidor de síntesis compatible con multiprocesadores para SuperCollider , Actas de la Conferencia de Audio Linux, Utrecht 2010.
  9. J. Rohrhuber, A. de Campo y Renate Wieser. Algoritmos hoy. Notas sobre el diseño de lenguajes para la programación justo a tiempo. Archivado el 28 de julio de 2011 en Wayback Machine . En Actas de la Conferencia Internacional de Música por Computadora , Barcelona, ​​2005.
  10. La interfaz de gráficos vectoriales la proporciona la clase Pen. Se pueden encontrar varios ejemplos en Audiovisuals with SC Archived 2020-06-09 at the Wayback Machine , blog de Fredrik Olofsson, 02.05.2009 (actualizado el 11.05.2012).
  11. Rutz, HH (2010). "Repensando el cliente de SuperCollider...". Actas del Simposio SuperCollider . Berlín. CiteSeerX 10.1.1.186.9817 . 
  12. "Sistemas que interactúan con SC" . Archivado del original el 23 de octubre de 2013. Consultado el 20 de junio de 2015 .
  13. Proyecto SuperCollider para Android en GitHub
  14. Tiny Music System - Blog de Cylob, 04.11.2009
  15. "SuperCollider con emacs: scel" . Archivado del original el 5 de junio de 2012. Consultado el 20 de junio de 2015 .
  16. "supercolisionador" . Atom . Consultado el 20 de junio de 2015 .
  17. "jleben/Scate" . GitHub . 13 de noviembre de 2013. 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 portátiles, Organised Sound 8(3): pp 321-30. doi : 10.1017/S135577180300030X
  19. J. Rohrhuber y A. de Campo. Espera e incertidumbre en redes de música por ordenador. Archivado el 14 de marzo de 2006 en Wayback Machine . En Actas de la Conferencia Internacional de Música por Ordenador , Miami, 2004.
  20. Una de las numerosas bibliotecas aportadas por los usuarios conocidas como "Quarks", y publicada en el repositorio SuperCollider Quarks .
  • Sitio web oficial