ChucK est un langage de programmation pour la synthèse sonore et la création musicale en temps réel. Il est open source et disponible gratuitement sur macOS, Windows et Linux. ChucK présente un modèle unique de programmation simultanée basé sur le temps, précis et expressif (nous appelons cela fortement chronométré ), avec des taux de contrôle dynamiques et la possibilité d'ajouter et de modifier du code à la volée. De plus, ChucK prend en charge MIDI, OpenSoundControl, les appareils HID et l'audio multicanal. Il est amusant et facile à apprendre et offre aux compositeurs, chercheurs et interprètes un outil de programmation puissant pour créer et expérimenter des programmes complexes de synthèse/analyse audio et de la musique interactive en temps réel.
Bienvenue chez Chuck !
Pour télécharger et installer ChucK, visitez la page de version officielle de ChucK .
Pour plus d'informations, y compris de la documentation, des exemples, des publications de recherche et des ressources communautaires, visitez la page d'accueil de ChucK ou son miroir de Princeton .
brew install chuck
Pour créer le dernier ChucK à partir des sources, clonez le dépôt chuck
depuis GitHub :
git clone https://github.com/ccrma/chuck.git
accédez au répertoire chuck/src
et exécutez make
:
cd chuck/src
make mac
OU pour construire un binaire universel (Intel + Apple Silicon) :
make mac-ub
Cela devrait créer un exécutable chuck
dans chuck/src
.
Dépendances : gcc, g++, make, bison, flex, libsndfile, ALSA (pour les builds linux-alsa), PulseAudio (pour les builds linux-pulse), JACK (pour les builds linux-jack)
Pour configurer un environnement de build pour Chuck sur Debian ou Ubuntu :
sudo apt install build-essential bison flex libsndfile1-dev
libasound2-dev libpulse-dev libjack-jackd2-dev
Pour les autres distributions Linux, la configuration doit être similaire, bien que les outils d'installation des packages et les noms des packages puissent être légèrement différents. ( REMARQUE : les configurations qui n'ont pas besoin de JACK ou PulseAudio peuvent omettre l'un ou les deux de ces packages. ALSA est nécessaire pour la prise en charge MIDI sous Linux. )
Pour construire chuck (avec tous les pilotes pris en charge : ALSA, PulseAudio, JACK), accédez au répertoire chuck/src
et exécutez make
:
cd chuck/src
make linux-all
Pour info, make linux-all
équivaut en termes de résultat à la combinaison de pilotes individuels :
make linux-alsa linux-pulse linux-jack
Pour créer Chuck pour un sous-ensemble d'ALSA, PulseAudio ou JACK, exécutez make
avec le(s) pilote(s) souhaité(s). Par exemple, pour créer uniquement pour ALSA et PulseAudio :
make linux-alsa linux-pulse
Ou, pour construire pour ALSA uniquement :
make linux-alsa
Ce processus devrait créer un exécutable chuck
dans chuck/src
.
Pour créer chuck à l'aide de Visual Studio (2019 ou version ultérieure recommandée), accédez à chucksrcvisual-studio
, ouvrez chuck.sln
et créez.
Pour compiler ChucK vers WebAssembly (WASM) :
emsdk
) : source ./emsdk_env.sh
chuck/src/
et exécutez make web
: cd chuck/src
make web
Cela devrait créer webchuck.wasm
et webchuck.js
dans le répertoire chuck/src/host-web/webchuck/js
. (Voir aussi : WebChucK)
Voici les référentiels sources maintenus par l'équipe ChucK. Développeurs recherchés !
mandrin | langage de base, machine virtuelle et moteur de synthèse
Chugins | étendez Chuck avec des plugins ! un excellent endroit pour commencer à contribuer
miniAudicle | un IDE pour Chuck
webchuck | chuck fonctionnant dans les navigateurs Web (fonctionne sur les ordinateurs de bureau et les téléphones !)
IDE webchuck | un IDE basé sur un navigateur pour Chuck
unité | Chuck dans l'unité
chunréal | ChucK dans Unreal Engine (nouveau !)
Chugl | Bibliothèque graphique ChucK (nouveau !)
Il est possible d'incorporer le noyau ChucK (compilateur, machine virtuelle, moteur de synthèse) en tant que composant/bibliothèque au sein d'autres hôtes logiciels C++. Cela peut être utile pour ajouter des fonctionnalités ChucK à vos systèmes logiciels ou pour créer de nouveaux plugins. Pour information, les différents outils répertoriés dans la section précédente intègrent tous ChucK dans ce modèle noyau/hôte : y compris la ligne de commande, miniAudicle, Unity, Unreal Engine, WebAssembly ; De plus, ChucK a été intégré à openFrameworks, aux applications iOS/Android, aux systèmes embarqués et aux systèmes de langage hybrides, par exemple FaucK (FAUST + ChucK), ChucKDesigner (ChucK dans TouchDesigner), chuck~ (ChucK dans Pure Data), chuck~ ( Chuck dans Max/MSP).
Pour montrer comment cette intégration peut être réalisée, nous avons créé une série d'exemples en C++ pour montrer comment intégrer ChucK dans n'importe quel hôte C++. Le plus simple de ces exemples, example-1-minimal.cpp, crée un hôte ChucK minimal en C++ en environ 20 lignes de code. Les exemples suivants montrent l'ajout d'audio en temps réel, de communication C++/ChucK à l'aide des globaux ChucK et du contrôle ChucK shred à partir de C++, respectivement. Ces exemples d'hôtes se trouvent dans le dossier src/host-examples/ de ce référentiel. Pour une utilisation plus avancée, consultez les différents outils de l'écosystème ChucK répertoriés ci-dessus dans la section précédente. Pour commencer à créer ces exemples d'hôtes :
cd src/host-examples
make
Il est également possible de construire uniquement le noyau ChucK (compilateur, machine virtuelle et moteur de synthèse), sans hôte et sans aucune E/S audio en temps réel spécifique à la plate-forme. Cela peut être un point de départ utile pour intégrer le noyau ChucK dans des systèmes hôtes existants disposant déjà d'E/S audio. Pour construire le noyau ChucK en mode "vanille":
cd src/core
make vanilla
Le code source de ChucK est sous double licence sous la licence MIT et la licence publique générale GNU 2.0 (ou toute version ultérieure). Vous pouvez choisir l'une ou l'autre licence si vous utilisez cette œuvre.
ChucK a été créé au début des années 2000 à l'Université de Princeton par Ge Wang et Perry R. Cook, alors que Ge était titulaire d'un doctorat. étudiant conseillé par Perry au Département d'Informatique. La première version de ChucK a été publiée sous licence GPL en 2003. De nombreux chercheurs, enseignants et artistes ont contribué à l'évolution de ChucK au fil des années. Spencer Salazar a créé miniAudicle, un environnement de développement intégré basé sur une interface graphique pour ChucK en 2004 (cet IDE, en plus de la version en ligne de commande de ChucK, reste en grande partie la façon dont ChucK est distribué et utilisé aujourd'hui). Le Princeton Laptop Orchestra (PLOrk), fondé par Dan Trueman et Perry Cook en 2005, a commencé à utiliser ChucK pour l'enseignement ainsi que pour la conception d'instruments et de sons. En 2006, Rebecca Fiebrink et Ge Wang ont créé le cadre d'analyse audio de ChucK, exprimé au moyen d'analyseurs d'unités, l'équivalent d'analyse des générateurs d'unités. J'ai rejoint le corps professoral du CCRMA de l'Université de Stanford en 2007, et la recherche et le développement de ChucK ont été distribués, avec des développeurs à Princeton, Stanford et ailleurs. Le Stanford Laptop Orchestra (SLOrk) a été fondé en 2008 au CCRMA, où ChucK a continué à être un outil pour la conception et l'enseignement d'instruments. La même année, la startup de musique mobile Smule a été cofondée, qui utilisait ChucK sur iPhone (nom de code « ChiP ») comme moteur audio en temps réel pour ses premières applications : Ocarina, Sonic Lighter, Zephyr et Leaf Trombone : Scène mondiale. Pendant ce temps, ChucK a continué à se frayer un chemin dans les programmes d'études en informatique musicale, notamment à Stanford, Princeton et CalArts. En 2015, le livre Programming for Musicians and Digital Artists: Create music with ChucK a été publié, rédigé par Ajay Kapur, Perry Cook, Spencer Salazar et Ge Wang. À peu près à la même époque, Kadenze a lancé le cours en ligne Introduction à la programmation audio en temps réel dans ChucK. Romain Michon et Ge Wang ont intégré FAUST et ChucK pour créer FaucK. En 2017, Jack Atherton a créé Chunity, qui permet de programmer ChucK dans le cadre de développement de jeux Unity. En 2018, Ge a écrit sur ChucK dans Artful Design: Technology in Search of the Sublime , une bande dessinée photo sur l'importance de la conscience culturelle dans l'élaboration de la technologie. ChucK fonctionne désormais nativement dans les navigateurs Web (WebChucK) et peut être programmé directement dans l'IDE WebChucK.
ChucK a été largement documenté dans des articles et des livres publiés (voir liste). Pour un aperçu, consultez :
"ChucK : un langage de programmation musicale fortement chronométré", extrait de la bande dessinée Artful Design : La technologie à la recherche du sublime
Wang, G., PR, Cook et S. Salazar. 2015. "ChucK : un langage informatique musical fortement chronométré" Computer Music Journal 39 : 4. est ce que je:10.1162/COMJ_a_00324
Les documents sans code source (articles, logos, extraits sonores, bandes dessinées) ont été migrés vers le référentiel chuck-media.
Rejoignez-nous ! Discorde communautaire Chuck | Liste de diffusion des utilisateurs de ChucK
Joyeux Chucking !