Indisciplinarité

Python et le « code créatif »

Ce blog parle d’outils dédiés à la création visuelle, et notamment de Processing et de son grand-frère openFrameworks. J’ai choisi de parler de Processing, car, de part sa simplicité, c’est selon moi sans doute le meilleur choix à faire quand on débute en programmation; Je parle également d’openFrameworks car, dans la gestion de sources plus conséquentes (par exemple supporter de nombreux flux vidéos), il a les épaules assez balèzes pour tenir le coup, bien que plus complexe à utiliser. Le cahier de cours que je suis en train d’écrire porte sur ces deux bibliothèques. Mais tout d’un coup, Python, très polyvalent me semble aussi très attractif…

Même si je savais que Python étant langage lui aussi connu pour sa simplicité et souvent recommandé pour les débutants, je ne m’y étais pas intéressé jusqu’à là. Son contexte d’apprentissage se fait dans un premier temps dans un environnement relativement austère où l’on fait quelques tours de passe-passe avec les concepts basiques comme les variables, les dictionnaires ou les tableaux… Le débutant à ses mornes débuts aura alors comme seul retour, les réponses d’une console. Au début, il peut même s’avérer qu’on ait du mal à concevoir concrètement à quoi sert ce langage (qui peut par ailleurs faire beaucoup de choses comme on le verra par la suite) pour finalement se dire que c’est sans doute un langage adressé aux informaticiens qui aiment faire des choses abstraites, sans véritable retour visuel. Pour les graphistes/vidéastes/designers que nous sommes, les débuts pourront être potentiellement assez décourageants.

J’ai le sentiment que les nombreux tutoriels que l’on peut trouver ne s’adressent pas particulièrement à un public « d’artistes », mais plutôt à un public d’informaticiens. Je n’ai à l’heure actuelle trouvé aucune ressource complète de l’utilisation de Python à des fins visuelles et/ou interactives adressé aux débutants en informatique comme Processing (qui, rappelons-le, est effectivement fait pour ça). Python ne semble pas être « vendu » comme un outil de création pour les artistes. Et pourtant les quelques perles trouvées sur la toile peuvent prouver le contraire.

Python pour designer graphiques et typographes

Python pourra sans doute intéresser les graphistes/typographes. Le logiciel FontLab, un des logiciels de références pour faire de jolies polices de caractère (mais qui n’est pas libre :-p) peut nous permettre d’exécuter des programmes en Python. Ainsi, par le biais d’un script, on pourra créer et compiler une police de caractères pouvant gérer l’aléatoire, le comportement d’une lettre par rapport à une autre…

wip001

Python for typographic designer

UFO, bibliothèque python

L’exemple ci-dessus

Python pour l’édition numérique et le design interactif

Python, par le biais de la bibliothèque Kivy pourra nous permettre de réaliser des applications (jeux, interfaces de contrôles…)  pouvant être portées sur Windows, Linux et Mac (merci Python!).

kaleidoscope-thumb kivyandroid-thumb

La bibliothèque Kivy

Source des images ci-dessus

Python pour la vidéo dans un contexte interactif

Vous avez peut-être déjà entendu parlé d’openCV? Eh bien, sans grand étonnement finalement, Python a la chance de pouvoir utiliser les fonctions dédiés à la vision numérique de cette bibliothèque développée en C (langage qui est plus bas niveau que Python). Avec openCv, on pourra gérer les entrées vidéos (et détecter des webcams, une kinect…), et multiplier les sorties sans code lourdeau. Pratique pour réaliser des installations multi-écrans!

800px-Mosaic

OpenCv étant à la base un paquet d’algorithmes magiques de vision par ordinateur (pour détecter depuis un ou plusieurs flux vidéos, un visage, une main, un motif, une couleur…) il sera possible de concevoir des applications physiques et interactives dont les questions-réponses homme/machine sont basées sur les gestes, les mouvements, les couleurs, les formes…

Labomedia, introduction empirique à openCv (source de l’image ci-dessus)

Python, openCv

Programming computer vision with Python

On peut jouer avec les codecs et faire plein d’autres trucs marrants:

http://wiki.labomedia.org/index.php/Vid%C3%A9o_3-bit_en_console

Python, Processing, openFrameworks…

Il ne s’agit pas ici de comparer ces trois langages (qui sommes-nous pour juger?) mais de jauger pour les néophytes que nous sommes, quel langage pourra être le plus attrayant pour commencer le « code créatif » et se projeter ensuite dans la maitrise d’un langage qui nous permettra de couvrir une majorité de nos envies (on pense à la polyvalence, la puissance, la simplicité d’un langage, mais on ne peut pas tout avoir non plus!).

L’univers qui englobe la philosophie de ces différentes bibliothèques diffère. L’univers de Python et de ces bibliothèques dédiées à la création visuelle est relativement austère, et ne s’adresse pas particulièrement à un public d’artistes, contrairement à Processing ou oF… On pourra se sentir un peu à l’abandon parfois avec les tristes ressources des bibliothèques en question. Mais, ça, c’est à nous, graphistes, peintres, vendeur de choucroute ou que sais-je de s’y mettre et d’écrire un « Faire joujou avec des formes et des couleurs avec Python » par exemple.
J’ai remarqué également que la plupart des installations interactives que j’ai pu voir sont faites en général avec Pure Data, Processing, ou openFrameworks. Ce constat, dans une échelle plus grande que celle de mon expérience personnelle, n’est pas forcément vraie; ça ne constitue pas bien sur un argument pour abandonner Python, qui sert à faire également beaucoup de choses, notamment dans le domaine du web.

matrice69

Ci-dessus, la Grille de l’Amour, mur de dessin interactif en ligne.

Avec Python, on peut également faire joujou avec un RaspberryPi (grossièrement: un petit ordinateur avec des pins en plus). Remarquable pour réaliser des installations interactives comme des bornes d’arcades…

Finished-747952

Pour en finir mince

Ce qui me pousse à m’intéresser à Python c’est tout d’abord sa syntaxe limpide. Deuxièmement, je bosse davantage sur les flux vidéos que sur du dessin génératif, j’ai donc besoin d’un langage assez réactif; pour la puissance, plutôt que de « subir » la syntaxe particulière d’openFrameworks (qui n’est pas insurmontable, mais bon), j’ai envie d’un petit gain de puissance par rapport à Processing tout en gardant la simplicité de Python. Troisièmement, la documentation sur la vision par ordinateur avec Python est semble assez complète, mais ça vous vous en foutez peut-être. Quatrièmement, sa portabilité sur Android, iOS, Windows et Linux avec Kivy pour concevoir des applications faites maison sans passer par du Java ou du C++. Cinquièmement, Python semble un bon langage pour piloter du hardware comme le (la?) Raspberry Pi. Il y en a même qui hacke des Minitels avec.

Sur le blog de l’openAtelier de Labomedia (qui propose d’ailleurs de vous faire découvrir gratuitement sur Orléans les langages Python, Processing ou Pure Data) on peut trouver par mal de bidouillages fait avec Python.

OpenAtelier, Labomedia