Chaos pour OpenMusic 1/2
Aujourd’hui je vais présenter quelques exemples de patches construits avec la librairie Chaos ou OMChaos pour OpenMusic écrite par Mikhail Malt à l’IRCAM.
Cette librairie implémente quelques unes des principales formules et théories issues des mathématiques du Chaos telles que attracteurs étranges, fractales, section de Poincaré et autres.
D’abord, il faut préciser que les mathématiques du Chaos et les fonctions que nous allons passer en revue ne sont pas du hasard, à proprement parler. Toutes ces fonctions donnent, à chaque tirage et à paramètres constants, les mêmes résultats. Elles sont déterministes… mais chaotiques, ce qui veut dire qu’un changement infime d’une des valeurs initiales peut produire d’énormes différences.
Je ne vais pas décrire en détail la théorie et la nouvelle science que représentent les mathématiques du Chaos, j’aurais bien du mal, je vous renvoie au très bon livre de Ian Stewart: « Dieu joue-t-il aux dés? » et à la bibliographie en fin d’article.
C’est d’ailleurs par des formules très simples tirées de ce livre que je vais introduire ces notions.
Cet article ne traite pas de mathématiques mais de leur utilisation comme outil de composition.
Ce qui est très différent.
Introduction
Ces quelques fonctions et exemples d’introduction ne viennent pas de la librairie Chaos mais elles font bien comprendre le principe de base des fonctions chaotiques: l’itération.
L’itération, c’est le fait, à partir d’une valeur de départ, d’effectuer une opération sur cette valeur et d’ajouter le résultat à la fin de la liste. L’itération suivante reprendra la dernière valeur obtenue et lui appliquera à nouveau cette même opération et ainsi de suite, un certain nombre de fois.
En programmation on appelle ça la récursivité. Le langage LISP est très bien adapté à la récursivité et donc OpenMusic puisqu’il est écrit en LISP.
C’est le principe de la calculette: on tape un nombre quelconque puis une opération quelconque, par exemple +, et à chaque fois l’opération est appliquée au dernier résultat obtenu. La différence avec l’itération c’est qu’avec la calculette, les résultats précédents ne sont pas conservés, seul figure le dernier.
Itérateur Unaire
Les premières fonctions utilisent donc cet itérateur que je vous invite à explorer. Il est dans le dossier de patches.
2*(x2-1)
Cette simple formule itérée 100 fois donne:
D’abord, la courbe qui en résulte paraît aléatoire, irrégulière. Mais si on regarde plus attentivement on voit tout de même apparaitre des régularités qui n’en sont pas vraiment, des formes qui se répètent sans être absolument identiques. Rien à voir avec la courbe issue d’une distribution aléatoire uniforme.
On a obtenu une première courbe chaotique et on va continuer.
(kx2)-1
Ici il faut expérimenter avec différentes valeurs de k comme k=1.4; k=1.5; k=1.75. On voit la courbe varier et le comportement chaotique à l’œuvre.
Orbitals
Quelques attracteurs.
Baker
La fonction Baker dans le dossier Orbitals.
En français: la transformation du boulanger.
En anglais: Baker’s map.
Fonction Baker2 avec les mêmes paramètres.
En faisant varier les paramètres nettement on obtient de l’irrégularité et de la régularité. Différents régimes chaotiques.
Plus la valeur de départ augmente et plus le comportement est régulier. A l’inverse, plus elle diminue et plus c’est chaotique.
Ginger
La première sortie est une liste de paires de coordonnées en deux dimensions ((xinit yinit)(x0 y0)(x1 y1)(x2 y2)…(xn yn)).
Les deux sorties suivantes sont respectivement la liste des x et la liste des y.
Ici les paramètres d’entrée sont les coordonnées initiales, xinit et yinit, le paramètre de contraction, cr -qui peut facilement être poussé à 1.53- variés aléatoirement pour « explorer » la fonction plus rapidement. Enfin le nombre d’itérations, ici 1000.
Attention il faut bien verrouiller la fonction pour qu’elle ne se lance qu’une seule fois(touche « b » puis cliquer sur la petite icône en haut à gauche jusqu’à ce qu’elle affiche « 1 »). C’est valable pour toutes les fonctions qui ont plusieurs sorties.
La fonction ginger2 propose un paramètre de contraction initiale, crin, et un autre de contraction finale, crend.
Il faut faire un affichage en points dans les BPC pour vraiment voir les images.
Hénon
Ce modèle est un version simplifiée de l’attracteur de Lorenz que nous verrons dans le prochain article. Elle a été suggérée par l’astronome français Michel Hénon en 1976.
La différence entre BPC(Break Point Curve) et BPF(Break Point Function) réside dans le fait que la deuxième n’accepte pas des valeurs de x diminuant. Elle est donc particulièrement adaptée aux fonctions du temps, qui, comme vous vous en êtes aperçu, ne revient jamais en arrière…
Mais il faut les afficher en points et non pas en lignes pour mieux les comprendre, les saisir intuitivement. C’est d’ailleurs valable pour la plupart des courbes issues de la librairie Chaos:
Pour en savoir plus on pourra consulter l’article de David Ruelle(en anglais): « What is a Strange Attractor? »
Hénon-Heilles
Modèle simplifié du mouvement d’une étoile dans un champ gravitationnel.
Les paramètres sont, successivement, de gauche à droite:
- xinit valeurs initiales
- yinit » «
- ydot » «
- E est la valeur de l’énergie totale
- dt est une valeur de temps(step) pour l’intégration numérique
- pas est le nombre d’itérations souhaitées
Au sujet de la section de Poincaré on consultera le livre de Ian Stewart: « Dieu joue-t-il aux dés? »
Affichage en points:
Kaosn
Génère une séquence basée sur l’application logistique.
Les paramètres sont successivement (g-d):
- seed valeur initiale entre 0.0 et 1.0
- lambda valeur ou liste de valeurs qui définit la « turbulence », le facteur chaotique
- longueur de la séquence
- fn le degré d’itération de l’équation logistique.
Dans ce patch, on voit en haut à gauche et à droite la fonction kaosn qui est incluse dans une double itération:
- Itération de la fonction elle même 20 fois soit une séquence de 20 valeurs.
- Itération (mise en boucle) 9 fois, par la fonction LISP mapcan, avec variation à chaque passage, du paramètre seed pour les vélocités et du paramètre lambda pour les hauteurs avec pour paramètres lambda successifs: (0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9)
On obtient donc pour ces deux fonctions 9 séquences de 20 notes chacune, enchainées. On voit bien dans le chord-seq la corrélation entre les variations de lambda et la traduction en hauteurs.
Peut-être plus intuitif.
Kaosn1
Paramètres de gauche à droite:
- seed valeur initiale entre 0.0 et 1.0
- lambda et gamma valeurs ou listes de valeurs qui définissent la « turbulence », le facteur chaotique, entre 0.0 et 4.0
- longueur de la séquence
- fn le degré d’itération de l’équation logistique.
Cette fonction est proche de la précédente, kaosn, elle possède seulement un paramètre de turbulence en plus: gamma.
Comme précédemment on produit 9 séquence de 20 valeurs chacune avec variations du paramètre lambda pour les hauteurs et gamma pour les vélocités.
Jean-Michel Darrémont
(A suivre…)
Télécharger les patches relatifs à cet article
Liens
Théorie du chaos – Wiki
Le site de Rick Bidlack signals and noises.
Bibliographie
« Dieu joue-t-il aux dés. Les mathématiques du chaos » Ian Stewart Champs Flammarion 1992
« La théorie du chaos: vers une nouvelle science » James Gleick Champs Flammarion 1991
« Chaotic Systems as Simple (But Complex) Compositional Algorithms » Rick Bidlack Computer Music Journal Vol. 16, No. 3 (Autumn, 1992), pp. 33-47