Talent IO Paris Creative Code algorave cookie collective INRéV : sommaire
Ce tutorial est une démonstration en laboratoire pour le plaisir, à but non lucratif, pour montrer que le concept est possible, ou pour un cours dans le cadre scolaire. Ne testez pas dans un environnement réel de production
Développer des application c'est sympa, mais lier l'art et le développement, l'art algorithmique, c'est encore mieux. C'est ce que nous proposent zOrg, Michel Bret, et Flopine chez Talent.io
Trois sujets autour du graphisme 2D et 3D, sujets qui nous seront présentés par zOrg, Michel Bret, et Flopine.
zOrg est un Creativecoder passionné par la création d'images numériques. Il programme des visuels en temps réel, synchronisés à du son, projetés sur des murs lors de soirées appelées "algorave". Il va nous présenter son rapport au livecoding, en retracant les événements récents du cookie collective, et les célébrations des 10 ans de l'algorave.
Michel Bret est un artiste numérique, et a été un des pionniers de l'image numérique en France. Il vient aujourd'hui nous présenter une méthode de travail pour la création artistique, dont voici le programme :
- rappel sur les réseaux neuronaux
- application à l'image interactive et aux acteurs virtuels
- les rêves artificiels
- la programmation interactive: live coding et fly coding
Cette présentation utilisera les concepts mêmes qu'elle introduit sous la forme de programmes interactifs.
Florine 'Flopine' Fouquart est une artiste numérique membre du Cookie Collective et doctorante à l'université Paris 8 dans l'équipe de recherche INRéV. Elle nous présente l'évolution de sa pratique du code créatif mise en relation avec sa plongée dans la scène démo.
Débutant par une vue d'ensemble et un petit historique sur la scène démo - une communauté d'artistes et techniciens partageant une passion pour l'art algorithmique - ce talk proposera ensuite une description de ce qui est, selon elle, fondamentale dans la maîtrise de son médium et dans son processus créatif. Des exemples concrets mêlant art et optimisation technique clôtureront cette présentation.
Une question? Posez-la ici
Besoin d'aide en dev?
Talent.IO est un job board permettant de trouver des jobs en développement avec transparence sur les salaires.
creativeCode intervenants artistes ou creatifs: art autour de la programmation de manière générale.
Talent IO Paris Creative Code algorave cookie collective INRéV : Michel Bret les rêves avec réseaux neuronaux
Les réseaux neuronaux, rêve artificiel, live coding, et autres choses inventées.
Réseaux neuronaux: c'est fondamental, on en a plein dans la tête. On entend "Deep learning" partout, mais ça date des années 1970, alors on découvre aujourd'hui ce qui a été fait en 1970. Algorithme qui permet de résoudre des problèmes linéaires que ne permet pas de faire le perceptron.
Entrée (oeil, oreillle), sorties (main, bouche) et couches cachées qui correspondent à notre cortex cérébral.
On utilise des réseaux pour reconnaitre des choses avec une matrice de poids synaptique. Algorithme de rétro propagation d'erreur: on calcule l'erreur par rapport à la sortie, différence entre ce qu'on voulait qu'il fasse et ce qu'il fait: intégrations différentielles.
Les algorithmes de reconnaissances faciales marchent bien, en Python par exemple, parce qu'il y a des arlgorithmes entrainés avec des millions d'images.
Le cerveau fonctionne en 16hertz généralement.
Mais l'algorithme sur les perceptrons, n'est pas conçu de la même manière que notre cerveau, l'information circule de gauche à droite.
Alors que notre cerveau fonctionne de manière réentrente et fait des boucles. Donc le deep learning n'est pas une bonne solution pour ce type d'art graphique.
Michel Bret utilise les réseaux réentrants pour créer.
Exemple de réseau neuronaux qui fabrique ds rêves.
Animation avec des bonhommes qui dansent au son de la musique "borderline". En fonction du signal audio, l'algorithme génère des animation des personnages.
Comme dans un rêve, on voit des images alors qu'on a les yeux fermés. Le cerveau s'envoie à lui même les informations. Réflexion= réentrence. On peut faire rêver les ordinateurs.
Une question? Posez-la ici
Besoin d'aide en dev?
Talent IO Paris Creative Code algorave cookie collective INRéV : Michel Bret avec le live coding
Programmation classique: on programme, on compile, on link et ça donne un executable.
L'assembleur permet de programmer près de la machine
Linker: remplacer les appels de fonctions par des adresses et il regarde s'il manque des fonctions
Executable
Si on veut modifier le code, il faut refaire tout ce process, c'est long. D'où le live coding: modifier le code pendant que l'executable fonctionne.
On utilise un interpréteur, mais il compile à chaque passage de ligne.
Autre façon: on utilise un assembleur de base, chaqua ligne est interprétée
Autre façon: compilateurs dynamiques comme le langage Chuck ou anyflo de Michel Bret , anyflo.exe.
Mais les informaticiens sont de grands conservateurs: on crée un truc on l'étudie, mais ensuite on ne veut pas le changer.
Avant d'affecter une variable, il faut la présenter et la déclarer.
Quand x est déclaré entier on ne peut pas le changer. Idem pour les structures. Mais dans un compilateur dynamique, on peut changer le type des objets. On peut donc faire de la programmation génétique. Car les structures autrements sont définies à la compilation et ensuite on ne peut pas les changer.
Soit une fonction live_code(){} qui crée des bodies, des corps. On peut faire des rotations entre 0 et pi...
Talent IO Paris Creative Code algorave cookie collective INRéV : Michel Bret avec l'emergent coding
Des programmes qui se créent eux mêmes: ils s'auto engendrent.
C'est du code qui se génère tout seul.
Avec de la musique, les bodies s'animent tous seuls et de plus en plus vite.
Philo génétique: on croise les programes entre eux
On applique des algorithmes génétqiues, ou programmation génétique. Théorie de la compilation: tout programme peut etre compilé dans n'importe quel langage et traduit dans n'importe quel langage. Exemple vers le lisp avec lequel on obtient un arbre avec sa structure arborescente.
Anto génétiques: on fait appel aux réseaux neuronaux. On fabrique des êtres nouveaux à partir d'êtres élémentaires.
Merci à Michel qui a renvoyé sa présentation :
=================================================
Présentation d'une méthode de création artistique
par Michel Bret
=================================================
1) Les réseaux neuronaux
2) Rêves artificiels
3) Live coding
4) Emergent coding
1) Les réseaux neuronaux
---------------------
L´idée de neurone artificiel date de 1943 avec les travaux de McCulloch et Pitts, puis ceux de David Rumelhart qui appliqua l'algorithme de la rétropropagation de l'erreur, popularisant le "deep learning". Il s'agit d'une méthode d'apprentissage supervisé sur des réseaux neuronaux de type perceptron à couches représentant très imparfaitement la réalité des systèmes nerveux qui sont massivement ré entrants. En effet, dans leperceptron, l'information circule des entrées vers les sorties sans aucun feed back, l'erreur commise est la différence entre la valeur reconnue et la valeur à reconnaître, en intégrant cette erreur l'algorithme remonte ainsi, de proche en proche, jusqu'aux entrées en corrigeant chaque fois la matrice des poids synaptiaques de façon à minimiser ces erreurs.
En connectant des capteurs (caméra, micros, motion capture, ...) aux entrées d'un réseau et en interprétant ses sorties comme des couples de forces appliquées aux articulations de modèles dynamiques de danseuses virtuelles, il est possible de constituer des ballets de synthèses...
2) Rêves artificiels
-----------------
Par rêve artificiel je n´entends pas la production par des machines d´images ou de récits pouvant évoquer nos propres rêves, mais bien plutôt l´état dans lequel une machine devrait se trouver pour devenir le siège de telles manifestations. Lorsque nous rêvons nous voyons des images, alors que nous avons les yeus fermés, nous entendons des sons alors que nous dormons en général dans le silence, nous pouvons voler alors que nous sommes allongés sur un matelas. Les régions du cerveau sur lesquelles se projettent nos organes des sens sont donc excitées par des signaux nerveux ne provenant pas de ces organes mais des couches profondes du cortex, il s'agit bien là d'un fonctionnement réentrant que j'ai modélisé au moyen de réseaux complètement connectés. On peut voir sur le programme intéractif "dream" le ballet rêver: en l'abscence de musique, l'information arrivant sur la couche d'entrée provenant des autres couches. Et le ballet dance lorsque la fft du signal audio est présenté en entrée.
3) Live coding
-----------
La programmation classique obéit au schéma suivant:
code -> compile -> langage machine -> link -> exécutable
Toute modification du code nécessite que soit recompilé et relinké le programme dans son entier.
la modification du code pendant son exécution peutse faire:
- via un interpréteur qui recompile une ligne de code chaque fois qu'elle est invoquée au détriment de la performance.
- un assembleur de base (pour des programmes assez
simples)
- un compilateur dynamique comme le langage anyflo anyflo que je développe depuis les années 80.
- Les langages ChucK, SuperCollider, LC, etc ..
Le life coding ou fly coding ou encore programmation à la volée est une technique basée sur le concept de programmation interactive multi-utilisateurs.
L'activité du programmeur codant en temps réél est visualisée sur un écran et peut être partagée par les spectateurs sur leur ordinateur personnel via interne ou un réseau local.
4) Emergent coding
---------------
Il serait intéressant de coder en s'élevant au dessus du processus de codage manuel, il suffit de lui donner la capacité de s'engendrer (auto programmation). Pour cela un programme dit "emergent coder" génère automatiquement du code, partiellement compilé en temps réél, le .exe restant en mémoire. un tel "emergent coder" est connecté à des capteurs auxquels les programmeurs et un public lambda peuvent communiquer des informations non "codantes" (c'est à dire non construites sur un
langage formel, par exemple à partir de musique, de gestes, ...).
Le "emergent coding" suppose que le code puisse générer du code, c´est à dire qu´il puisse se modifier lui-même, donc qu´il soit vivant. Nous utiliseront alors les algorithmes de la Vie Artificielle pour construire le "emergent coder"
- du point de vue phylogénétique (évolution des espèces) la programmation génétique consiste à soumettre une population de programmes aléatoires (donc peu performants) à une sélection darwinienne par croisements, mutations et optimisation d'une fonction fitness. Ce qui est rendu possible par le fait que, tout programme étant isomorphe à un arbre, par bouture de sous arbres on peut alors croiser des programmes.
- du point de vue ontogénétique un code peut évoluer au cours de son existence interactive avec des réseaux neuronaux ou des algorithmes génétiques (évolution darwinienne non plus de programmes mais de datas).
Je montre sur le programme "emergent_code" deux fonctions générées en temps réel au rythme de la musique "borderline" de Grégory Jarrige.
Talent IO Paris Creative Code algorave cookie collective INRéV : Flopine florine fouquart create with code on hardware
Talent IO Paris Creative Code algorave cookie collective INRéV : présentation de Flopine florine fouquart
Artiste numérique, demosceneuse, qui va à des demo parties etc. Technical artis at don't nod. Doctorante a Inrev et étudiante chez ATI.
Avec quoi faire du creative coding?
Les classiques, processing, coding train, threJS, python, avec PIL ou PILow
Shaders etc.
Les shaders: ce sont des programmes qui discutent avec le GPU pour rendre une image, afficher une image.
Stack: DirectX: HLSL, OpenGL: GLSL, SPIR-V, Metal
shadertoy est une plateforme où on peut jouer le code en temps réel. Ca compile en temps réel.
Aller chercher flopine pour voir les oeuvres
https://www.shadertoy.com/user/flopine
Sur Twitch aussi, on voit des battles de shader codings. On a 25 minutes pour créer une scene, un effet visuel et à la fin le public vote à l'applaudimètre.
competition
Ressources pour faire du shader coding: "the art of code" pour les tutos videos.
Talent IO Paris Creative Code algorave cookie collective INRéV : On hardware
Historique rapide de la demoscene
La demoscene a évolué en fonction des puissances des machines, en fonction de 3 grandes familles:
8 bits: comodore 64, Amstrad CPC
Les jeux craqués avaient une première intro avec une musique chiptune, une animation, et le nom du groupe; D'échanges de disquettes ça a grossi, et s'est monté des rassemblements, copy parties, swap parties, et le but était de venir avec un carton de disquette vide et on repartait avec un carton de disquettes de jeux.
16 bits: Ataris ST Amiga
A ce moment là on exploite moins le hardware, les demos sont beaucoup plus des executables. Les groupes codaient leur render engine. Ce n'est plus de l'exploit hardware, mais de l'utilisations de fonctions logicielles.
32-64 bits : PCs d'aujourd'hui
On est sur de l'abstraction technique: on n'a plus accès au hardware. On ne code plus en assembleur. L'abstraction empeche l'exploit hardware. La demoscnene s'est imposée des contraintes artificielles pour s'amuser: exemple, réussir à faire un executable en 4 ko.
Une question? Posez-la ici
Besoin d'aide en dev ?
voir pouet.net un catalogue gigantesque de demos
LA demoscene a évolué avec une culture, des codes, des lexiques autour de la création d'executables générant des animations.
Il y a toujours des démos et des gens qui codent sur des machines 8 bits.
Maintenant c'est en ligne. Il y a de la compétition: les demosceneurs se jugent entre eux. "making old computers still a thing"
Exemple de demo qui tient sur 64ko Conspiracy demo tape 20 "in demo we trust"
Talent IO Paris Creative Code algorave cookie collective INRéV : Hardwired 1991 sur amiga
Les possibilités matérielles sont des moteurs de créativité.
On pense pratique avec le hardware et les limitaitons du hardware.
Exemples d'optimisations.
Connaitre les GPUS et les CPUS permet de bien optimiser les temps de rendus.
Les bitplanes de l'Amiga 500: 1 pixel n'est pas un paquet avec un octet par chanel. 1 pixel c'est décrit par un octet par bitplane.
Talent IO Paris Creative Code algorave cookie collective INRéV : zOrg
Visualisation de vidéos de Live coding lors de séances à Londres et aux pays bas.
Certains artistes utilisent des IDE et stacks d'intelligence artificielle pour créer de la musique, avec par exemple Jupiter Netbook et Python
Pour participer aux prochains events cookie collective, voici le calendrier:
https://framagenda.org/apps/calendar/p/zpDjE9gGFeFZAmdz/dayGridMonth/now
Cet article reflète exclusivement l'opinion de ses auteurs et n’engage en aucune façon Consultingit. J'espère que ça vous a plu. Vos commentaires/remarques sont les bienvenus: