ChucK es un lenguaje de programación para síntesis de sonido y creación musical en tiempo real. Es de código abierto y está disponible gratuitamente en macOS, Windows y Linux. ChucK presenta un modelo único de programación concurrente basado en el tiempo que es preciso y expresivo (a esto lo llamamos fuertemente sincronizado ), con tasas de control dinámico y la capacidad de agregar y modificar código sobre la marcha. Además, ChucK admite MIDI, OpenSoundControl, dispositivos HID y audio multicanal. Es divertido y fácil de aprender, y ofrece a compositores, investigadores e intérpretes una poderosa herramienta de programación para crear y experimentar con programas complejos de síntesis/análisis de audio y música interactiva en tiempo real.
¡Bienvenidos a ChucK!
Para descargar e instalar ChucK, visite la página oficial de lanzamiento de ChucK .
Para obtener más información, incluida documentación, ejemplos, publicaciones de investigación y recursos comunitarios, visite la página de inicio de ChucK o su espejo de Princeton .
brew install chuck
Para crear el último ChucK desde el código fuente, clone el repositorio chuck
de GitHub:
git clone https://github.com/ccrma/chuck.git
navegue hasta el directorio chuck/src
y ejecute make
:
cd chuck/src
make mac
O para construir un binario universal (Intel + Apple Silicon):
make mac-ub
Esto debería crear un ejecutable chuck
en chuck/src
.
Dependencias: gcc, g++, make, bison, flex, libsndfile, ALSA (para compilaciones linux-alsa), PulseAudio (para compilaciones linux-pulse), JACK (para compilaciones linux-jack)
Para configurar un entorno de compilación para chuck en Debian o Ubuntu:
sudo apt install build-essential bison flex libsndfile1-dev
libasound2-dev libpulse-dev libjack-jackd2-dev
Para otras distribuciones de Linux, la configuración debería ser similar, aunque las herramientas de instalación del paquete y los nombres de los paquetes pueden ser ligeramente diferentes. ( NOTA: las configuraciones que no necesitan JACK o PulseAudio pueden omitir uno o ambos paquetes. Se necesita ALSA para la compatibilidad con MIDI en Linux).
Para compilar chuck (con todos los controladores compatibles: ALSA, PulseAudio, JACK), navegue hasta el directorio chuck/src
y ejecute make
:
cd chuck/src
make linux-all
Para su información, make linux-all
tenga un resultado equivalente a combinar controladores individuales:
make linux-alsa linux-pulse linux-jack
Para crear chuck para un subconjunto de ALSA, PulseAudio o JACK, ejecute make
con los controladores deseados. Por ejemplo, para compilar solo para ALSA y PulseAudio:
make linux-alsa linux-pulse
O bien, para compilar solo para ALSA:
make linux-alsa
Este proceso debería crear un ejecutable chuck
en chuck/src
.
Para compilar chuck usando Visual Studio (se recomienda 2019 o posterior), navegue hasta chucksrcvisual-studio
, abra chuck.sln
y compile.
Para compilar ChucK en WebAssembly (WASM):
emsdk
): source ./emsdk_env.sh
chuck/src/
y ejecute make web
: cd chuck/src
make web
Esto debería crear webchuck.wasm
y webchuck.js
en el directorio chuck/src/host-web/webchuck/js
. (Ver también: WebChucK)
Aquí están los repositorios de código fuente mantenidos por el equipo ChucK. ¡Se buscan desarrolladores!
mandril | Lenguaje central, máquina virtual y motor de síntesis.
chugines | ¡Extienda el portabrocas con complementos! un gran lugar para empezar a contribuir
miniAudicula | un IDE para chuck
webchuck | chuck ejecutándose en navegadores web (¡funciona en computadoras de escritorio y teléfonos!)
IDE webchuck | un IDE basado en navegador para chuck
chunidad | Chuck en unidad
chunreal | ChucK en Unreal Engine (¡nuevo!)
resoplando | Biblioteca de gráficos ChucK (¡nueva!)
Es posible incorporar el núcleo ChucK (compilador, máquina virtual, motor de síntesis) como componente/biblioteca dentro de otros hosts de software c++. Esto puede resultar útil para agregar funcionalidades de ChucK a sus sistemas de software o para crear nuevos complementos. Para su información, las diversas herramientas enumeradas en la sección anterior incorporan ChucK en este modelo de núcleo/host: incluida la línea de comandos, miniAudicle, Unity, Unreal Engine, WebAssembly; Además, ChucK se ha integrado con openFrameworks, aplicaciones iOS/Android, sistemas integrados y sistemas de lenguaje híbrido, por ejemplo, FaucK (FAUST + ChucK), ChucKDesigner (ChucK en TouchDesigner), chuck~ (ChucK en Pure Data), chuck~ ( Inserte Max/MSP).
Para mostrar cómo se puede realizar esta integración, hemos creado una serie de ejemplos en C++ para mostrar cómo integrar ChucK en cualquier host C++. El más simple de estos ejemplos, ejemplo-1-minimal.cpp, crea un host ChucK mínimo en C++ en aproximadamente 20 líneas de código. Los ejemplos siguientes muestran cómo agregar audio en tiempo real, comunicación C++/ChucK usando globales de ChucK y control de trituración de ChucK desde C++, respectivamente. Estos ejemplos de host se pueden encontrar en la carpeta src/host-examples/ de este repositorio. Para un uso más avanzado, consulte las diversas herramientas del ecosistema ChucK que se enumeran anteriormente en la sección anterior. Para comenzar a crear estos ejemplos de host:
cd src/host-examples
make
También es posible construir solo el núcleo ChucK (compilador, máquina virtual y motor de síntesis), sin un host y sin ninguna E/S de audio en tiempo real específica de la plataforma. Este puede ser un punto de partida útil para integrar el núcleo ChucK en sistemas host existentes que ya tienen E/S de audio. Para construir el núcleo ChucK en modo "vainilla":
cd src/core
make vanilla
El código fuente de ChucK tiene doble licencia: la licencia MIT y la licencia pública general GNU 2.0 (o cualquier versión posterior). Puede elegir cualquiera de las licencias si utiliza este trabajo.
ChucK fue creado a principios de la década de 2000 en la Universidad de Princeton por Ge Wang y Perry R. Cook, mientras Ge tenía un doctorado. Estudiante asesorado por Perry en el Departamento de Informática. La primera versión de ChucK se lanzó bajo licencia GPL en 2003. Muchos investigadores, profesores y artistas han contribuido a la evolución de ChucK a lo largo de los años. Spencer Salazar creó miniAudicle, un entorno de desarrollo integrado basado en GUI para ChucK en 2004 (este IDE, además de la versión de línea de comandos de ChucK, sigue siendo en gran medida la forma en que se distribuye y utiliza ChucK en la actualidad). La Princeton Laptop Orchestra (PLOrk), fundada por Dan Trueman y Perry Cook en 2005, comenzó a utilizar ChucK para la enseñanza, así como para el diseño de instrumentos y sonido. En 2006, Rebecca Fiebrink y Ge Wang crearon el marco de análisis de audio de ChucK, expresado a través de analizadores de unidades, la contraparte de análisis de los generadores de unidades. Ge se unió a la facultad del CCRMA de la Universidad de Stanford en 2007, y la investigación y el desarrollo de ChucK se distribuyeron, con desarrolladores en Princeton, Stanford y otros lugares. La Stanford Laptop Orchestra (SLOrk) se fundó en 2008 en CCRMA, donde ChucK continuó siendo una herramienta para el diseño y la enseñanza de instrumentos. Ese mismo año, se cofundó la startup de música móvil Smule, que utilizó ChucK en el iPhone (con nombre en código "ChiP") como motor de audio en tiempo real para sus primeras aplicaciones: Ocarina, Sonic Lighter, Zephyr y Leaf Trombone: Escenario Mundial. Mientras tanto, ChucK continuó abriéndose camino en los planes de estudio de música por computadora, incluso en Stanford, Princeton y CalArts. En 2015, se publicó el libro Programación para músicos y artistas digitales: crear música con ChucK , escrito por Ajay Kapur, Perry Cook, Spencer Salazar y Ge Wang. Casi al mismo tiempo, Kadenze presentó el curso en línea Introducción a la programación de audio en tiempo real en ChucK. Romain Michon y Ge Wang integraron FAUST y ChucK para crear FaucK. En 2017, Jack Atherton creó Chunity, que permite programar ChucK dentro del marco de desarrollo de juegos de Unity. En 2018, Ge escribió sobre ChucK en Artful Design: Technology in Search of the Sublime , un libro de fotocomics sobre la importancia de la conciencia cultural en la configuración de la tecnología. ChucK ahora se ejecuta de forma nativa en navegadores web (WebChucK) y se puede programar directamente en WebChucK IDE.
ChucK ha sido ampliamente documentado en artículos y libros publicados (ver lista). Para obtener una descripción general, consulte:
Extracto del cómic “ChucK: un lenguaje de programación musical fuertemente sincronizado” de Artful Design: tecnología en busca de lo sublime
Wang, G., PR, Cook y S. Salazar. 2015. "ChucK: un lenguaje musical informático muy sincronizado" Computer Music Journal 39:4. doi:10.1162/COMJ_a_00324
Los documentos que no son de código fuente (artículos, logotipos, fragmentos de sonido, cómics) se han migrado al repositorio de chuck-media.
¡Únase a nosotros! Discordia de la comunidad ChucK | Lista de correo de usuarios de ChucK
¡Feliz lanzamiento!