Caractéristiques de CsoundAC

CsoundAC est un module d'extension Python pour écrire de la musique en programmant en Python. CsoundAC est basé sur le concept de graphes de musique par Michael Gogins, dans lequel une partition est représentée par un arbre hiérarchisé de nœuds, qui peuvent contenir des notes, des générateurs de partition, des transformations de partition, et d'autres nœuds.

CsoundAC fournit aussi une interface Python vers l'API de Csound. Grâce à celle-ci, il est très facile d'utiliser Csound pour exécuter les compositions en CsoundAC. Avec les triples guillemets de Python, il est même possible d'inclure le code de l'orchestre de Csound pour une pièce directement dans le code Python de cette pièce, si bien que toute la programmation pour une pièce peut être maintenue dans un seul fichier.

Le système de coordonnées dans CsoundAC est basé sur un espace musical euclidien ayant pour dimensions {temps, durée, type d'évènement, numéro d'instrument, hauteur comme numéro de touche MIDI, intensité comme vélocité MIDI, phase, coordonnée spatiale X, coordonnée spatiale Y, coordonnée spatiale Z, ensemble de classes de hauteur, 1}. Un point dans cet espace musical peut être une note, une inflection de note, ou même un grain sonore.

Un graphe de musique est un graphe orienté acyclique, ou un arbre, de nœuds dans l'espace musical. Ces nœuds sont associés avec des transformations locales du système de coordonnées. Il y a des nœuds pour contenir des partitions ou des fragments de partition, pour générer des partitions et pour transformer des partitions. De plus, chaque nœud peut contenir des nœuds enfants qui héritent du système de coordonnées du nœud parent.

Il est ainsi possible de composer une partition musicale en incluant ou en générant des notes dans les nœuds de niveau inférieur, puis en les assemblant dans une partition en utilisant des nœuds de niveau supérieur, et finalement en exécutant la partition avec Csound. Le procédé est strictement analogue à la construction d'une scène en 3 dimensions en synthèse graphique lorsque l'on génère des objets primitifs tels que sphères, cônes et cubes, puis qu'on les déplace dans l'espace pour assembler la scène.

Les classes de nœud dans CsoundAC sont :

Enfin, le processus de composition peut inclure la dérivation d'une nouvelle classe Node en Python à partir d'un Node existant, afin de créer de nouveaux générateurs de partition et des transformations.