ChucK est un langage objet dédié à la création sonore et la composition musicale en temps réel. C'est un "jeune" langage : la première version publique est sortie en 2004, tourné vers le livecoding. A l'origine de ce projet, on trouve Ge Wang, du Soundlab de l'université de Princeton.
Les éléments constituant ChucK sont de 2 types : unités génératrices (UGEN), et unités d'analyse (UANA) permetttant de faire des aller-retour entre analyse du son et synthèse. Parmi les UGEN : sampling en temps-réel, lecture de fichier sonore, oscillateurs (onde sinusoïdale, carrée, en dent de scie, triangulaire, impulsions, etc.), filtres, modélisations physiques d'instrument basés sur la bibliothèque STK (clarinette, moog, FM, cuivres, instruments à corde, générateurs de phonème), générateurs de bruit, reverb, delay, etc. Parmi les UANA : Transformée de Fourier, DCT, RMS.
Dans ChucK, le temps est un type de donnée qui peut-être manipulé, ce qui donne un contrôle très précis sur la durée, le déclenchement des évènements sonores. Chuck peut communiquer en MIDI, OSC par le réseau et récupérer les valeurs HID envoyées par un joystick, par exemple.
Les scripts Chuck sont envoyés à une machine virtuelle, qui les exécute en temps réel, synchronisés entre eux selon des repères temporels manipulables dans le langage. On peut utiliser ChucK directement en ligne de commande, ou en passant par un environnement de programmation (miniAudicle ou Audicle). Pour découvrir ce langage, le méthode la plus simple est de télécharger et d'installer une version de miniAudicle, qui inclut tout ce qu'il faut, et de parcourir le répertoire d'exemples très complet.
site principal : http://chuck.cs.princeton.edu/
le manuel : chuck manual (pdf en anglais)
la thèse de Ge Wang, intéressante à lire pour la partie sur ChucK mais aussi pour un historique de l'évolution de la musique par ordinateur, des origines jusqu'à aujourd'hui (temps réel et livecode)
wiki : http://chuck.cs.princeton.edu/wiki/
forum anglophone : http://electro-music.com/forum/forum-140.html
liste de discussion principale : https://lists.cs.princeton.edu/mailman/ … huck-users (il y en a d'autres)
une présentation complète en vidéo (une heure et demie!) par Ge Wang, en anglais : video
hello world!
L'exemple de base pour chuck :
SinOsc onde => dac; // relier un générateur d'onde sinusoïdale à la sortie sonore
while (true) { // boucle infinie
Std.rand2f(30, 1000) => onde.freq; // changer la fréquence de l'onde
100::ms => now; // avancer de 100 millisecondes
}tutoriels en vrac
communication chuck - processing par OSC (fr)
utiliser chuck en ligne de commande sur windows (fr, 2006)
miniAudicle
Un éditeur de texte pour Chuck intègrant la machine virtuelle, qui permet la saisie et l'exécution de scripts en temps réel.
miniAudicle : http://audicle.cs.princeton.edu/mini/
A gauche, un script chuck, à droite les scripts en cours d'exécution dans la machine virtuelle, en dessous la console de débuguage.
Audicle
Un environnement visuel complet pour chuck, et la compilation musicale "à la volée" avec éditeur, machine virtuelle et différentes vues possibles des "shreds" en cours d'exécution.
Audicle : http://audicle.cs.princeton.edu/
démo :

Hors ligne
Bonjour emoc,
Merci pour ces ressources, un bon aperçu de chuck
et des programmes qui lui sont plus ou moins liés.
Pour la dernière version supportant les pilotes ASIO:
http://electro-music.com/forum/topic-18931-25.html
Cette version semble beaucoup plus stable que les
précédentes.
solipse.
Hors ligne
La documentation de ChucK (en anglais) est dorénavant maintenue sur flossmanuals, sous forme de wiki :
lire : http://en.flossmanuals.net/ChucK/Introduction
écrire : http://en.flossmanuals.net/bin/view/ChucK/WebHome
Hors ligne
Encore quelques ressources supplémentaires pour, et autour de, ChucK :
LiCK (Library for ChucK) http://wiki.github.com/heuermh/lick/ : bibliothèque de fonctions, avec entre autres la possibilité d'utiliser des collections (type arraylist) et des fonctionnalités objets.
CKV, an audio language based on Lua, inspired by ChucK http://ckvlang.org/
ruck, a port of ChucK's strong timing to Ruby : http://github.com/alltom/ruck
Hors ligne