Dedicamos uno de los materiales anteriores a
OpenMusic , una herramienta para escribir música en OOP. También hablamos sobre
lenguajes de programación diseñados para crear composiciones de audio.
Hoy decidimos continuar con el tema y hablar sobre el idioma deportivo. Fue desarrollado especialmente para que los compositores puedan escribir música de computadora durante las presentaciones en vivo.
Foto de ichael Pierce / Unsplash¿Qué es Sporth?
A menudo, el término "
programación musical " se refiere al proceso de escribir música usando secuenciadores, sintetizadores y software. Pero algunos artistas recurren a más herramientas "hardcore": código de programa y PL especializado.
Uno de esos idiomas es
Sporth .
Sporth (abreviatura de SoundPipe fORTH) es un
lenguaje de programación apilado implementado en C. Sus operadores le permiten generar señales de diferentes frecuencias y teclas, trabajar con tablas de funciones para secuenciadores e implementar modulación paramétrica.
El lenguaje fue desarrollado por el ingeniero Paul Batchelor, quien en un momento
trabajó en altavoces con el equipo de
Google ATAP . Presentó su proyecto en la Conferencia Internacional sobre Codificación en vivo en 2018. Aunque
el repositorio de origen se creó en GitHub mucho antes, en 2016.
Según Paul, cuando diseñó Sporth, se inspiró en lenguajes de pila como Forth y PostScript. Forth admite muchas CPU con una cantidad limitada de recursos informáticos a su disposición. Por ejemplo, se usó en
Jupiter ACE con un kilobyte de RAM. En cuanto a PostScript, su variación está presente en formato PDF, y su intérprete está integrado en muchas impresoras.
Características del lenguaje
Sporth utiliza el modelo de máquina de la pila para pasar parámetros. El programador pone en él un conjunto de generadores de señal interconectados (generadores de unidades), que se encargan de reproducir el sonido. Por ejemplo, la línea a continuación formará una sinusoide con una frecuencia de 440 Hz con una amplitud de 0.5 puntos (el instrumento tiene su propia escala).
440 0.5 sine
Los generadores de señales se pueden combinar con el símbolo "+". Por ejemplo, el resultado de la lista de comandos a continuación es una
señal DTMF de doble tono .
440 0.2 sine 350 0.2 sine +
El lenguaje admite trabajar con disparadores, impulsos únicos, que están formados por el metrónomo (metro). El siguiente ejemplo muestra cómo construir
un generador de envolvente usando Sporth:
4 metro 0.5 maytrig 0.001 0.01 0.01 tenvx 1000 0.5 sine *
Sporth le permite trabajar con variables, modulación paramétrica y operaciones de apilamiento directo. Todos los operadores utilizados son concisos y se ejecutan en orden.
Esta estructura de lenguaje aumenta la velocidad de escritura de código. Esta es una de las razones principales por las que se usa para sesiones en vivo, cuando un compositor-programador escribe música en tiempo real frente a una audiencia en vivo. Por cierto, puede estudiar de forma independiente a todos los operadores y probarlo en la práctica: la red tiene
un entorno interactivo en Go.
También en el sitio puedes encontrar varios
ejemplos musicales .
Photo Slim Emcee / UnsplashPero los residentes de Hacker News señalan que el lenguaje tiene una documentación bastante escasa, que no es adecuada para los "programadores de música" novatos. El autor promete corregir esta deficiencia, pero por ahora puede consultar el libro de cocina temático y las especificaciones en GitHub .
Sporth también tiene una API para integrarse con aplicaciones de terceros. Abre funciones que no están disponibles en un entorno interactivo, como funciones de devolución de llamada personalizadas. En particular, Sporth ya es
utilizado por los desarrolladores del marco para sintetizar sonidos
AudioKit para iOS.
Análogos
El número de análogos de Sporth es bastante extenso, pero entre ellos se puede distinguir el lenguaje
ChucK . Fue desarrollado por los ingenieros Perry Cook (Perry Cook) y Guy Wong (Ge Wang) de la Universidad de Princeton específicamente para presentaciones en vivo. ChucK es un lenguaje de paradigmas múltiples con tipos de datos sólidos disponibles para Windows, Linux y Mac OS X. Admite la ejecución paralela de varios hilos y le permite modificar el programa directamente en tiempo de ejecución.
La documentación con ejemplos de implementación está
disponible en el sitio web del proyecto .
Además de ChucK, hay un
Supercollider : no solo es un lenguaje, sino también un entorno de síntesis de audio en tiempo real. La herramienta le permite escribir GUI personalizadas para trabajar con sonido: controles deslizantes, analizadores y otros. Puede usar dispositivos MIDI y
HID para administrar sus grabaciones.
Curiosamente, la música también se escribe usando el lenguaje de pila Forth mencionado anteriormente, que inspiró a Paul Batchelor. Se basa en
el proyecto Synstack , una
plataforma de software y hardware para generar sonido en el microcontrolador
STM32F4 / F7 . Synstack admite más de 25 operadores: generadores de señal (sinusoide, sierra, curva de Bezier), filtros, funciones algebraicas, etc. Forth también se utiliza para la
representación dinámica
de gráficos : hay una plataforma
Forth Haiku para esto. En teoría, el instrumento es adecuado para visualizar sonido.
También cabe destacar las herramientas de programación musical como Csound, Pure Data e Importu. Si tuviera que trabajar con otros idiomas de musas. programación, comparte tu experiencia en los comentarios.
Lectura adicional de nuestro "Mundo de alta fidelidad":
¿Qué es la programación musical? ¿Quién lo hace y por qué?
Cómo la PC conquistó la industria de los medios con el software: discutiendo Pro Tools y Media Composer
Como el estallido de un fuego, el crujir de las puertas y el ruido se convierten en música.
"Todo lo que leas se usará en tu contra": cómo la música rap llegó a la sala del tribunal
Fabricantes de música de videojuegos: algunos de los nombres más destacados
Dónde obtener muestras de audio para sus proyectos: una selección de nueve recursos temáticos