microphone

2003.04.21

Douglas Edric Stanley

> source code: microphone

cf. Bibliothèques externes

Ce diagramme décortique les ingrédients du Reactive Square de John Maeda et de l'installation Messa di Voce de Golan Levin et Zachary Lieberman. Il démontre d'ailleurs l'influence de l'un sur l'autre, une influence qui n'est pas vraiment un secret car Golan Levin est bien connu d'être un disciple dévoué de John Maeda et a même suivi un cours de ce dernier spécifiquement dédié à l'usage de logiques d'entrée dans la création de machines réactives. Mais ce diagramme n'est pas une illustration exclusive des algorithmes internes à ces deux machines et peut être appliqué à d'autres machines, comme pratiquement toutes celles construites avec le logiciel asFFT d'Antoine Schmitt.

Mode d'emploi. A droite un diagramme qui réagit soit à votre microphone intégré (comme sur de nombreux ordinateurs portables) soit à l'entrée audio de votre ordinateur (via la carte son). Pour le faire fonctionner, dites « oui » quand l'ordinateur vous demande si vous êtes d'accord pour activer votre micro, puis faites du bruit (allez-y crier un peu, cela fait du bien) et regarder ce qui se passe. Vous pouvez également chanter dans votre microphone, ce qui donne un résultat encore plus « probant » (cf. sonde).

microphone est un diagramme réactif. Il réagit à une seule donnée : le volume de votre entrée audio. Cette valeur est ensuite traité par plusieurs modes de visualisation qui vont du plus simple au plus complexe en partant du coin en haut à gauche. Chaque mode correspond également à une fonction facilement repérable dans les codes sources qui sont également accessibles ici. D'ailleurs chacune des fonctions ne remplit que quelques lignes de code (cliquez sur « microphone.pde » pour les voir directement en ligne). Il y a une fonction pour la récupération du volume, puis 8 modes de visualisation dont voici l'explication:

0) getLevel();

Cette fonction demande à votre ordinateur d'aller récupérer le volume actuel de votre micro. Ce volume est représenté dans l'ordinateur par une seule et unique valeur que nous traitons légèrement ici pour éstomper les effets de bruit sur la ligne qui rendent incontrollables/incompréhensibles nos visualisations. La valeur récupéré ici (« level ») sera ensuite passé aux 8 modes de visualisation.

1) drawValue();

La première visualisation ne fait rien d'autre que de montrer la valeur de la variable « level ». Il nous affiche la donnée brute, telle que l'ordinateur la voit, et non pas sous forme d'une illustration graphique comme par la suite. Cette valeur est importante, car elle insiste sur la relative pauvreté de notre interaction avec la machine : toute la complexité de notre voix (timbre, fréquence, souffle) rentrera dans l'ordinateur à travers ce chiffre unique. Mais cette pauvreté peut également se transformer en une puissante simplicité à travers des algorithmes astucieux comme on voit dans les œuvres de John Maeda ou de Golan Levin et Zach Lieberman. La possibilité de focaliser sa voix à travers ce chiffre unique permet une grande jouabilité par la suite si de l'autre côté le code recomplexifie ce chiffre à travers des figures de nouveau multidimensionelles.

2) drawMeter();

La valeur du « level » est ensuite utilisée pour afficher un « indicateur de niveau » assez classique et qui se trouve sur la plupart des chaînes hi-fi. L'algorithme dessine des traits verticaux en partant de gauche à droite horizontalement selon la valeur du microphone. Le chiffre du volume est donc traduit en nombre de traits.

3) drawCircle();

Bien que la forme ici soit plus inhabituel pour représenter le volume d'un son, il est finalement aussi simple à affecter dans la programmation que l'indicateur de niveau. Ici nous indiquons que le rayon du cercle est déterminé par la valeur du micro. Quand le micro est silencieux ( = 0 ) le rayon du cercle égale zéro, c'est-à-dire il est invisible. Quand le micro est à son maximum ( ~ 256 ), le cercle est également à sa largeur maximum. (cf. Reactive Square)

4) drawSquare();

Au lieu de dessiner un cercle, cette mode de visualisation affiche plutôt un carré. Mais au lieu d'affecter le diamètre du carré, le volume détermine la volatilité de chacun de ces quatre coins. En utilisant la fonction « random » (aléatoire) de l'ordinateur, on augemente l'écart aléatoire de chaque coin vis-à-vis de sa position « normale ». Quand la valeur du micro égale 0, chaque coin n'écarte absoluement pas de cette position. Mais plus on augemente cette valeur, plus les coins choissent des valeurs aléatoires d'écart de cette norme. L'étendu de ces valeurs aléatoires vont de zéro à la valeur représenté par le volume actuel. Cette visualisation est une simulation d'une interaction du Reactive Square de John Maeda.

5) drawAngle();

La portée de votre voix ne doit pas forcément être limitée à des réactions purement éphémères. Elle peut être utilisée pour affecter des objets dôté d'une principe de mémoire, c'est-à-dire que la valeur de votre voix peut influencer une valeur déjà éxistante dans l'ordinateur. Dans ce mode, cette valeur mémorise en permanence l'orientation d'une flèche. Quand nous chantons fort, la flèche tourne dans le sens des aiguilles d'une montre. En chantons plus doucement la flèche tourne dans le sens opposé. Il est intéressant de noter ici que nous avons basculé d'un objet purement réactif (éphémère) à quelque chose qui agit de plus en plus comme un instrument dans le sens d'un outil. La mémoire a beaucoup à voir de ce bascul et ouvrira notre visualisation sur des usages même de performance musicale (cf. Messa di Voce).

6) drawGlyphs();

Cette visualisation est une simulation d'un algorithme tiré du Reactive Square de John Maeda. Votre voix écrit du texte dans un mini-traitement de texte. Ou, pour parler plus techniquement, votre voix remplis des valeurs à l'intérieur d'un array. Chaque valeur détermine l'opacité de chaque carré, ou « glyph » pour faire référence au terme typographique d'un signe (du grec gluphe, ou « gravure »). Plus votre voix sera forte, plus les couleurs seront opaques.

7) drawLine();

Avant de passer à la synthèse de toutes ces modes de visualisation, nous avons eu besoin d'ajouter une dernière visualisation purement réactive. Ici les valeurs du microphone détermine l'épaisseur d'un long trait.

8) drawSketch();

C'est ici que nous voyons la parenté de Reactive Square sur Messa di Voce. En réunissant presque tous les modes de visualisation on finit par simuler le fonctionnement de cette machine : le rayon devient le facteur de déplacement de notre trait ainsi que son épaisseur, l'orientation de la flèche détermine la direction du trait, et les glyphs définissent son opacité. Le résultat donne des traits qui se déssinent avec rien d'autre que votre voix.

John Maeda, The Reactive Square
Golan Levin & Zachary Lieberman

Notre simulation ne prétend pas connaître toutes les subtilités de la machine de Golan Levin et Zach Lieberman et d'ailleurs nous supçonnons l'usage d'une autre variable dans l'orientation de leur trait : au lieu d'utiliser une seule valeur pour l'orientation et le rayon de déplacement, ils utilisent probablement la fréquence de la voix pour orienter le trait. Mais les détails technique ne nous importent pas ici à partir du moment où ils ne changent pas la configuration de la machine, ni son algorithme ne mannière significative, c'est-à-dire à partir du moment que nous avons saisit au moins les contours de son diagramme.