¿Existe algún lenguaje de programación musical posterior a la era del SuperCollider? (Música, Música Electrónica, Ordenador, Síntesis, Composición Algorítmica)

Nathaniel preguntó.
preguntó.

La historia de los lenguajes de síntesis musical y sonora se remonta a los lenguajes Music N a partir de la década de 1950. A partir de ahí, se pueden seguir los hilos hasta una serie de lenguajes que se desarrollaron en los años 90, como CSound, , ChucK y SuperCollider. CSound podría considerarse el último de los lenguajes «tradicionales» de Music N, que se centran principalmente en la síntesis de sonido, mientras que ChucK y SuperCollider añaden también herramientas flexibles para la composición. (También hay una variedad de lenguajes gráficos de apuntar y hacer clic, como Max MSP y PureData que también descienden del paradigma de Music N, pero para esta pregunta sólo me interesan los lenguajes basados en texto).

SuperCollider ha sido siempre mi herramienta preferida. Ofrece una gran variedad de opcodes (módulos de procesamiento de señales de bajo nivel) y muchas formas de parchearlos sobre la marcha, desencadenar eventos de forma algorítmica y responder de forma interactiva a señales externas.

Sin embargo, SuperCollider es ya una tecnología algo antigua. La primera versión se publicó en 1996 y la versión 3 fue de código abierto en 2002. Aunque hay nuevas características desde entonces, el núcleo del lenguaje y del sistema de síntesis no ha cambiado y sigue estando optimizado para una máquina de principios de los años 00. En particular, está claramente establecido en un paradigma de un solo procesador y no puede aprovechar el paralelismo que ofrecen las GPU modernas, aunque se ha añadido soporte para múltiples núcleos de CPU. También hay algunas características de su arquitectura que probablemente se replantearían si se rediseñara ahora. (Un ejemplo es la necesidad de ejecutar el servidor de síntesis como una aplicación separada del propio lenguaje, lo que hace que sea muy difícil conseguir una sincronización precisa de las muestras, entre otras cosas).

Así que me pregunto si hay algún sucesor de SuperCollider y sus primos de esa época, ya existente o en el horizonte, que vaya más allá de lo que se puede conseguir con las herramientas mencionadas. Las posibilidades de paralelismo en la GPU parecen inmensas y, además, desde 2002 se han producido avances en el diseño de los lenguajes de programación que podrían dar lugar a una herramienta aún más impresionante y flexible. En concreto, las máquinas virtuales pueden ser ahora casi tan eficientes como el código C desnudo, lo que significa que el código DSP podría compilarse justo a tiempo, eliminando la limitación de ceñirse a un conjunto preprogramado de opcodes.

¿Alguien conoce algún desarrollo o investigación en este sentido? Estoy empezando a volver a la composición musical y la programación DSP después de un largo período de estar ocupado con otras cosas, y sería realmente impresionante tener una nueva y emocionante herramienta para aprender, con características que van más allá de lo que he utilizado antes. Como he mencionado anteriormente, estoy hablando de lenguajes basados en texto para la programación DSP y la composición algorítmica, más que de sistemas visuales basados en parches.

Resumiendo, mi principal interés es saber si hay proyectos que se centren en técnicas de síntesis de vanguardia, que utilicen nuevas tecnologías que no estaban disponibles a principios de la década de 2000. (Pero las respuestas que enumeran otros tipos de paquetes también son útiles).

Comentarios

  • Supernova es el servidor de síntesis multi-CPU, y está incorporado en el código base principal. –  > Por PeterT.
  • @PeterT ¿es así? Eso no es nada obvio en el sitio web, incluso mirando el registro de cambios. ¿Dónde está documentado y cómo se utiliza? –  > Por Nathaniel.
  • En la página de inicio, punto de bala en las características de scsynth: `Soporte multiprocesador utilizando la implementación del servidor Supernova`. Todavía no lo he usado realmente, no estoy seguro de si es el servidor por defecto o tal vez hay que ajustar la configuración. Entonces es cuestión de organizar los nodos en grupos-p. –  > Por PeterT.
  • También vale la pena señalar sc 3.7 es bastante reciente y debe ser bien optimizado para las arquitecturas de CPU modernas. Estoy de acuerdo en que la gpu podría ser interesante, puede haber algunos problemas con la latencia. No conozco ningún entorno similar a SuperCollider que haga un uso extensivo de la gpu. Tal vez debería añadir eso a mi respuesta. –  > Por PeterT.
  • @PeterT la compilación JIT del código DSP sería un cambio de juego también, si existiera en un lenguaje similar a SuperCollider. Actualmente, estamos limitados a un conjunto finito de UGens, pero eso permitiría generar otros nuevos sobre la marcha. Sería un poco como tener a Fausto perfectamente integrado en el lenguaje. También permitiría hacer cosas como la retroalimentación de una sola muestra de forma realmente eficiente. Eso no habría sido factible en 2002, pero las máquinas virtuales ahora son mucho más eficientes y creo que sería posible ahora. –  > Por Nathaniel.
5 respuestas
PeterT

Efectivamente, hay nuevos lenguajes, así como bibliotecas dentro de otros lenguajes. Voy a enumerar algunos que me vienen a la cabeza, y tal vez vuelva a ampliar mi respuesta más tarde.

editar 03/17: He revisado ligeramente la respuesta. Cabe destacar que, en gran medida, SuperCollider se utiliza a menudo como back-end para sistemas basados en una serie de lenguajes & paradigmas; en algunos casos, sistemas que hace unos meses, cuando escribí esto originalmente, utilizaban sus propios motores de audio ahora utilizan scsynth.

  • Sonic Pi – utiliza su propio servidor, pero parece más centrado en la facilidad de uso (sobre todo para su uso en la educación) que en las características avanzadas de síntesis. (editar: utiliza SuperCollider en el back-end; un tema recurrente en esta lista).
  • ChucK – no se ha desarrollado muy activamente, pero es un lenguaje muy accesible con algunas características interesantes para el razonamiento sobre el tiempo que van más allá del azúcar sintáctico.
  • Tidal Cycles – Sistema basado en Haskell principalmente para la composición generativa más que para el diseño de sintetizadores. Utiliza OSC para controlar otras aplicaciones (originalmente esto era principalmente el sintetizador personalizado Dirt, , ahora SuperDirt en SuperCollider, pero también puede trabajar con otras).
  • Overtone (biblioteca Clojure) – Un front-end de SuperCollider en Clojure.
  • Gibber – un frontend basado en Javascript para Web-Audio, que es una API de síntesis basada en ugen parte de HTML5 que funciona en todos los navegadores modernos.
  • Fausto – un lenguaje de bajo nivel para DSP que se compila en plugins para otros programas, de cosecha similar a SuperCollider.

Comentarios

  • He sugerido una edición que añada enlaces y breves descripciones a su lista. Algunos de estos proyectos son nuevos para mí, así que por favor corrijan mi edición si alguna de mis descripciones es incorrecta o incompleta. Ninguno de los proyectos de la lista aborda realmente los principales problemas que he identificado, pero es muy útil tener la lista. –  > Por Nathaniel.
  • ¿Te refieres a Overtone para el punto 4? overtone.github.io –  > Por Dave.
David Vogel

Yo seguiría recomendando Csound como la mejor herramienta para la programación de audio basada en texto. Se está desarrollando activamente y se ha mantenido al ritmo de los últimos avances. Otra mención digna es una biblioteca llamada pyo que puede utilizarse con Python 2.7 y Python 3.5+. Los desarrolladores de la misma tienen un montón de otras buenas herramientas que tal vez quieras consultar. Si quieres profundizar en la programación de audio, «The Audio Programming Book» es bastante destacado, aunque fue publicado en 2010.

polymechanos

Hay algunos marcos de composición algorítmica interesantes basados en el lenguaje de programación LISP:

Nyquist https://www.cs.cmu.edu/~music/nyquist/
Open Music http://repmus.ircam.fr/openmusic/home

Hay un libro sobre Nyquist escrito por los informáticos/compositores que desarrollaron el lenguaje – algocompbook.com.
Open Music fue creado por la gente del IRCAM – es.wikipedia.org/wiki/IRCAM -, un instituto francés para la investigación del sonido y la composición musical electroacústica.

Comentarios

  • Para un entorno moderno de composición y síntesis algorítmica en LISP (quizás no para los puristas de LISP), Overtone es una buena apuesta. –  > Por PeterT.
  • Sí, Overtone es otra opción interesante, que probablemente se está desarrollando más activamente también – en comparación con los proyectos académicos más antiguos que he mencionado. –  > Por polymechanos.
Phil Freihofner

Conozco a un compañero que ha escrito un sistema de sintetizador, en Java, que se puede editar en directo. Se llama Praxis LIVE, y es de origen reciente, aprovechando las capacidades multihilo de Java. El autor es bastante hábil, ya que también ha escrito JAudioLibs, que incluye un enlace de audio en Java para JACK Audio Connection Kit.

Java puede hacer mucho más con el audio de lo que generalmente se le atribuye. Está mucho más cerca de C++ en términos de rendimiento que Python o JavaScript. He estado hackeando con audio 3D y un sintetizador FM construido desde cero en Java, también un theremin en tiempo real como ejemplo de lo que Java puede hacer. Me gusta ser capaz de rodar mi propia, jugar con las ideas en lugar de ser limitado por los sistemas de sintetizador. Hay un poco de obstáculo para conseguir un buen control de las primitivas de sonido de Java (por ejemplo, SourceDataLine), pero una vez que se supera eso, hay todo tipo de cosas que se pueden construir desde cero si estás tan inclinado.

Athina

Hay un libro de Will Pirkle llamado Designing Audio Effect Plug-Ins in C++: With Digital Audio Signal Processing Theory. Te presentará el sistema RackAFX que se utiliza con Microsoft Visual C++ 2008-2010. Puedes usar RackAFX con otros compiladores de C++ que no sean MSVBC++. Se utiliza RackAFX para ayudar a diseñar la interfaz gráfica de usuario, mientras que C++ se utiliza para escribir la parte de código DSP. RackAFX actualizará automáticamente el código a medida que se añadan Sliders, Knobs y botones. Hay muchos ejemplos de Delay, Filtros, etc.

Comentarios

  • Tiene dos libros, ambos son increíbles. También lo es el libro de Eric Lyon sobre la escritura de externos de Max en C. Creo que es realmente la forma en que las cosas van ahora, la gente está haciendo su audio en las bibliotecas en C / C ++ y la incrustación en envs host como SuperCollider, Max, PD, etc. –  > Por Iain Duncan.