Code pour inédits de L’unijambiste

La talentueuse compagnie L’unijambiste présentera sa prochaine production  “Le songe d’une nuit d’été” (de W. Shakespeare traduit par A. Markowicz et F. Morvan) à partir de mi-janvier 2012 dans les théatres français.

Vous l’aurez compris votre serviteur fait partie de la sympathique équipe qui va préparer cette création.

Dans les mille et une surprises qui attendent le public je parlerais aujourd’hui de celle qui est déjà un peu disponible sous la forme d’une application pour téléphone portable.

Lors de nos premiers échanges et recherches d’idées pour cette création j’avais évoqué une technique (ou technologie comme on veut) permettant de jouer des morceaux avec des dés. Je disais qu’il suffit de tourner le dés, d’en dévoiler une autre face pour qu’une nouvelle ligne de basse soit lue ou qu’une nouvelle mélodie soit entendue. J’ai fait les premiers essais en utilisant tout d’abord les symboles fiduciaires de Reactivision, un excellent programme permettant de faire de l’identification de symboles à l’aide d’une caméra numérique.

Lors d’un premier atelier, Robert le Magnifique (qui compose la musique de ce spectacle) avait concocté un petit set que nous nous sommes mis à manipuler avec des dés en bois, d’environ 5 cm de coté sur les faces desquels nous avions collés les fiduciaires de Reactivision. Reactivision envoie des informations à Max5 qui, lui même, commande Live.

Cette vidéo vous permettra sans doute d’en comprendre les principes.

Pas satisfait de l’esthétique des symboles et ayant des doutes sur la robustesse de la détection des fiduciaires (dans des conditions de tournée) j’ai choisi de développer une application sachant détecter des symboles plus simples : les symboles utilisés en réalité augmentée (marqueur BCH).

J’ai donc développer une application en C++ en me servant d’Openframeworks et d’ARToolkitPlus.

Tout ça est un peu technique, mais très simple au final : vous avez sans doute déjà rencontré des QR codes ou des codes barres. Ces deux types de symboles font la même chose : ils associent une information complexe (le nom d’un produit, sa traçabilité, son prix, …) à un symbole. Par lecture du code à l’aide d’un interpréteur, on obtient les informations contenues dans le symbole (c’est ce qui se fait en caisse des magasins). Les QR codes (un exemple est donné en fin d’article) sont un peu plus complexes et permettent de stocker plus d’informations. Les codes que nous utilisons sont simples et permettent juste d’être distingués les uns des autres.

Vous aurez, j’espère, l’occasion de venir voir fonctionner ce concept lors de notre tournée.

Dans la continuité de cette idée nous avions l’envie de prolonger cette manière de déclencher la lecture d’un média numérique en proposant une expérience de “flash code” un peu spécifique au projet, permettant d’accéder à des informations inédites sur notre création, des making off que nous n’aurions pas forcément l’occasion de faire partager, …

Nous avons donc créé le symbole suivant que vous pourrez voir dans les plaquettes des théatres où nous sommes programmés.

J’ai développé Flash Cube une application pour téléphone Android qui permet en filmant ce symbole d’être renvoyé sur une page du site de L’unijambiste où vous pourrez voir ces informations inédites. Cette page étant conçue comme un journal, son contenu change fréquemment.

Cette application est surtout l’occasion de faire pratiquer à notre futur public (ou une partie) le concept que nous utilisons pour jouer la musique (et bien d’autres surprises) dans notre nouvelle création.

Le code ci-dessous est cliquable à partir d’un téléphone Android et permet de récupérer, sur le market Android, l’application.

Pour ce qui est du code, j’ai utilisé Andar, une librairie Java de réalité augmentée. Le développement a été réalisé entièrement en Java sous Eclipse. Comme je l’expliquerai dans un prochain post, Processing permet de développer de manière plus simple une application sous Android mais n’offre pas toutes les possibilités du SDK Android.

Un trip sous HTML5

A priori la conception de page html n’a pas de grand rapport avec le spectacle vivant. Et pourtant …

Je suis convaincu que “la mixité des genres” et l’émergence d’évènements qui proposent au public de participer, nous invitent à utiliser les navigateurs (sous toutes les plateformes) afin de mettre en relation le public et les artistes.

http://www.creativeapplications.net/flash/light-invaders-flash-webapp-openframeworks/ en est un bel exemple.

L’apparition récente d’une nouvelle version du standard HTML est un outil de plus afin de développer et créer des pages plus attractives sans avoir à forcément passer par le développement sous un logiciel propriétaire (Flash par exemple).

Avec le HTML5 et Javascript, il est désormais simple d’intégrer une interactivité puissante.

En guise d’introduction, j’ai revisité la première page de mon ancien siteafin d’y intégrer une animation. Ce qui m’intéressait surtout était de créer une animation qui tourne en fond de page et qui réalise un dessin avec certains paramètres aléatoires sur la base des lettres de mon nom. Ce qui donne

La lecture de http://diveintohtml5.org/ m’a beaucoup aidé.

J’utilise sur cette page une technique assez simple (ceux qui sauront lire le code de la page constateront qu’il est assez court) :

1 – Avec une fonction de la bibliothèque jquery, je charge comme animation de fond une fonction d’un script javascript (anibg.js)

2 – Je dessine le canvas.

//______________________________________________

En détail, ça donne :

1. Pour pouvoir utiliser les fonctions de la bibliothèque jquery

<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js“></script>

Rien de plus, la bibliothèque est en ligne pas besoin de la charger quelque part sur son site et de se préoccuper de la mise à jour, …

Pour charger le canvas “backgroundCanvas” en tâche de fond de page il suffit d’écrire :

<script type=”text/javascript”>

$(document).ready(function() {
new AniBg(“backgroundCanvas”).start();
});
</script>

Auparavant en début de page j’ai chargée la page Javascript anibg.js qui a une fonction AniBg(“le nom de mon canvas”).

La voici :

function AniBg(canvasId) {
var canvas = document.getElementById(canvasId);
this.start = function() {
size = SCREEN_WIDTH/12;
for (i = 0; i < letterRules.length; i ++) {
letterStore[i] = new letters(letterRules[i][1], letterRules[i][2], size);
letterStore[i].color = randomRGBA();
}
beginAnimateBackground();
}
function beginAnimateBackground() {
var context = canvas.getContext(‘2d’);
var val_alf = Math.abs(Math.sin(frame*A_RADIAN/2.))/2.;
for (i = 0; i < letterStore.length; i ++) {
var letter = letterStore[i]
if (frame > 25) {
letter.velX = randomRange(-4, 4);
letter.velY = randomRange(-2, 2);
}
letter.update()
letter.render(context, letterRules[i][0])
}
frame++;
setTimeout(beginAnimateBackground,10);
}

Le manière de dessiner les lettres m’a été inspirée par un post de Richard Powell sur son excellent blog.

2. Plus loin, je définis le canvas par

<div id=”backgroundHolder”>
<canvas id=”backgroundCanvas” width=”1000″ height=”800″></canvas>
<div>

Le cas épineux du navigateur Internet Explorer dont la version est antérieure à la 9, oblige à écrire :

<!–[if lt IE 9]>
<script src=”./js/excanvas.js”></script>
<![endif]–>

afin de voir la page fonctionner de manière normale même sur les navigateurs plus anciens.

Coté performance, c’est un peu décevant. En effet ma première page est gourmande en traitement. J’ai essayé diverses optimisations mais il s’avère que le javascript sur une page html demande encore un gros effort de la machine pour faire un dessin relativement simple (dessiner des lettres avec des traits).

Interactions dans un atelier

 

J'animais récemment un atelier vidéo au collège de Nogent (Haute Marne).

J’accompagnais Jean-François Vrod qui animait pour sa part l’atelier son.

Pendant ce court atelier, j’ai surtout concentré mon attention à faire réaliser aux élèves de petits films d’animations ou des séquences vidéos à partir de jeux d’ombres, séquences à l’envers, …

L’atelier se concluant par une représentation menée par notre duo, j’ai consacré un peu de temps à deux parenthèses interactives dans notre show.

Voici enfin un extrait vidéo
http://www.youtube.com/watch?v=drCTA8_g-pw

Le premier consistait à inviter un des élèves à faire avancer une vidéo avec sa voix. L’élève parle, le niveau de sa voix est mesuré et la valeur est converti afin de définir la vitesse de lecture. La séquence vidéo était l’assemblage de vidéos que ce même élève avait filmé lors d’un trajet en voiture de son domicile jusqu’au terrain de foot.

Ce type d’interaction est-il immédiat ? Le processus est-il totalement sous contrôle ? Est-ce un automatisme plutôt qu’une interaction ? En fait pas réellement, car, d’une part, la tension provoquée par le moment de la représentation provoque de l’inattendu dans l’accélération, donc dans les images fixes qui ponctuent les temps de parole. D’autre part, si les paroles sont inspirées par ce que l’on voit dans les moments de silence (ce qui était notre choix), le fait de parler de ces images les font tout de suite disparaître, …

Voici, ci-dessous, l’abstraction Max qui exécutait cette interaction.

 

----------begin_max5_patcher----------
2744.3oc0bs0iaabE9Ys+JHTaARBbkma7VdxFnuTf1hV37VPvBJQtZmXJREJ
JEmD37auyLGRJxU7xHIxQRFXkLupu4aN2mC4e7zr4KS+Rzt4Veu0OZMa1e7z
rYpcI2wrhsmMeSvWVEGrScZySh90zk+772AG5PPVRvlH3H7CQA6edav93xCm
G8kb0w1FjmmY0xYjreCOINJWcywE67kzj7c7eWcawjEnima597xSlVrWXW4+
11HXXLe96J9y5mJNEwu9pW4IqeNKZUNbVLFSbesH1xOwDh5KuEnpqgGp.tXr
92wr40.V038iIoI+l.Q6r9uYokmQVzt7zrBnb7tsK3PT3yhal..OK4B9x84.
wOqhnk.MSb2yixdNJIXYr51fTG6qO8T4me8o2o4b0KwoBNqWpdq.vQI4A47z
jZzC1UQO19xOYnSXGslgHcMCIvUPtbJZYPx5dmln.NHNJzbJNpC+5Cq5ydDM
l8t.xsohPkj928msx2jyg3vcQb63qSBh6mwHp4LOp7SJYgcOx0HixL4VnqWq
uSpgmj2Kufs8Txx9JMdBHVgZmXbamWx3Bte73icQwBzYgWb8rRmZZJErgrEV
RMtJqf118QMrwkZ..2KAzbjh5YX.3G6Xezxt7y1FFzxexUoa1Dk.SHeJOHK+
8B62au0CEvdG0WiQBiz1P4.OL5hzc2DsaWv5nSEVkrxzYXqe4SOrhNPvWzd8
U6MtBncyGBYkaFgvn0IDVuDhYMlMF13oCYMSOqZ.IQbUe45zKI4XTOghveBg
wvj4NbvHqT1JcfOQ8YwmXFEprnfPq+wG+gO9ou+8+mz0BCYu+eIRW38xjEVr
I8vsRWirf54vbEgQ4qz1v998JIYDss0A4Q2LBQoIQ.uRT29HCp6znVoFusN9
GyAJjgHl5qQ3DNs4D9eGkOxAPuzZoABVbXaGfHfiyQ2OcY8fZaFyGqEiD9la
lRAC7DSTeYC9Zb5fQXOxJEEoWhYZnTfaSo3elXErOjeOq2iTCQGMFhD+VyiH
ZOO15a9ae6Hp6u5UgRYjEZwDW3LYZzua3roI9tPDnpPGbn8F.gmQ7IdaKuPA
gPbwCWdAhYBI+6DRKH7DZQDJiWuVKrKJeGTGQRurhiYRTYaLWHpHzxakYnih
mzySKhv7FNEEhsYKioEF0gwFSI7TxNfS0ADdHFxFCWDC1TlhagjSYnXCJAgf
ZdA5Y18KAgMpDzMMGEPzA6yFNIE+ogUj7vx844oIWz5unlIgPsPrR4+ya4WF
bAxzU3Bq3OFDIjeMXrIMLpqASGqFiyIxIepdkzZQ6s14C2UwUbYUnsKOBw7v
HKrEdD7HbM9JKhrFxpZf5UQmFgV0ZO9mWj.KAJKqJdPnRIr51pGcZhp9M7fk
DjddKIn8Xl4oLsSqI0UY+JoDn5cPYJX8WOFeyDh0pfXAkHifPPLcs.WNSO23
qnFFjbNT2ttBfvL4nr0ZS5AdDO4kT8ig.svlJ+WqDiWeF4qVm819avp7TzUD
Lv+ClTT9yNrHYOrIb0uQT1aa5gW3wQGhx10TeU1JEUYjqhO1CT7w1PsVjdkJ
QhX5Xcb5pOGEVqX.ylGF8xYcSR2Fkb7BTBOM9n4YxSdqol5+vA6iye9Myisd
7WBVE04E2JQNa95LdXZhDDMtR4tK+4jKqKDZXcbqNijfssbw4oowKCxNv2wK
57jpYBgrdPBeiHfNUM1jF1PUWGey1LNT4ip8Acuxq6VkkFG23VAG4PKGIL5.
eUzuxCyeUcuNxVM5QoZRNMzBar+9VZ1N055dIZ6TCAAhSDZ8r9Y0H7t5jnSp
YzpzjD4BnkmZo.lU5KV+LOewujuPYxvB5cn4kWMzOPyJsIcIrRSGZMMT8hrO
jDDiUskopS2asYxB0ImVms61bdWTtCrVvXpR3tbE+6gwIyeCHaw3tAHz7rfU
e9PZrbERWbOQntTOfCQGK5YuDJ0bD5To2ZC4EpuZKtK0VP2Ljuw5PP7dgUpG
fQewp2n8fefw99Lk+Oqu4+8CV6S34691GARnvNh1r.4Nxv8joV.46qMmP6jS
1mkI9+VpTi3IPPuOBL.CedREc5N+uHECTNQ2II.gpwCCGPwmWLM1cwAkCZqL
Yk.e.F4XvUn1ibmAG4GMNtKRXnHbbsMVe4P6bIQG8.FvkALnGI4pggyL95WE
FNUP4s1OGSBqQV4szaEVqixqlxJ5n.nXFhMjRwxuUZ0qR2KruUbJxuUX8YYf
.K0Rv7MU8fHBn02syYL+9lwNoq3zIg+ghuFYCEcFVBFb2yudlKbvdl9d+wpL
cFQUOHu2qlRyZUNjQkhpn.srYeDp+cAglIFt0recTSPoFTSGPo.bT5W1FeSf
BfWulr5QnW24GnowcroCM8TsJAmw7yw5uDyS5pTFJrIOd6Sb6R2mspbDWn3Y
40.kgQ6x4IUUi5GOVyAqlCmW4ggMq9iRzfGtMkmjWfOqeRKIsKA1XcfM8tC1
HcfM4tC1tZ.66OT67PhZ6GRTydHQM8gD0jGNTK83ok5n28Gr0Qxld+AacDsY
2evVGYa6KC1Th2BGFwyl9NKeU4omtggNgm3ex4cyYejlv99QnwU2fpP2ex5Z
g66OXqS.J36Kb6qIa6bew1TMg8clydxM.1E6Tf+y5skQqcOwT0xE8bng51i0
woKChK59kp6w7K+85QGcWzuDy2XQrQ21GBJB7TqC8hbmOVXHizuUMVHNJAYQ
XHqODDFrU9nJ+gf84opGjagj7GhSS2NFs1cmOT.Bv77l.gv7WF7YWt34+2EZ
sOncJ6jJG4VeW0NrYs8B9QxPk6uhFpyBmxXeNIc4pz3zrxVpRHd56Uuspvcz
5lMdwNnDnbWPPLWhqrmlZ4ANZcRp3Rh4q9b2uxEtL4Znj3L3UpBzdtjy7kPi
aUmWtLMSPu5yIppLKv61840u2KWW6VfKtnhOPkgGOVOZ1xR99Ww2xl4u7Yvl
BK3jauuul7zTiPcsMKIKPSu0oYAYMfyRsp+5odIa2C4IScZiIlNXhXVLoEO0
H0qoGSHMvjsQoIJVWZxbXR9PCcLu9tJ7yYJNIef2rqdGBP7H0diBTrUwiRME
4rvqR2G2ogsyZ3LDEScOygCFqdMa4qVIIpc0Fl.r9WFV8TnTRukaMFfEODy5
aTgWGM3u2PxFQeZPcbmKZRkPfW2a1jpstRz5oAXOS2a99RvwbJdGI3Vs00ZO
mpoxh4bwXqyTM0rdhczPKE6YdLMHO4ZV0TcfjYYI65KmgNq.yvPB64uv0y1k
fE2ZJRpJVndJ2XL.LRC.SLFGpi4LW+KydlJ3EeT0FWIT80w0kYihW9FHXPaG
DGyioA4ICa6PqvNNSUUpCU4Tu3IZGhaSs00hV2I.sWKlzw7KwrImQ70ESmg8
LFFRDhplNKmikacsnUGScdl09AUmLtolsZITcroQMaJ2TGcyQ0bgxR0wJA09
tK6NyFcsNkdyr9hzYZ6L8XWjylMTIVFEe5VXTQaiebqwPOcvIaCaOiMAXxVE
AIkAkmwtZiqEqDcx66L0eoHkj.0GJhDL2q1ZLRcvYjYVhvWqOQjsCSJmBkpq
Tps9VT3Igsf6cPWurq+DHmPH9fDBplfh80m0lGYB.aip3ZWWz195EswS.fEF
tpvK79Fu.uT50WnJ2o.vPM+nLVc6Frqmb8lBv5ilDvR0Q1kcMNIDa70m9+Pj
uhpF
-----------end_max5_patcher-----------

La deuxième consistait à utiliser l’accélération d’une wiimote pour contrôler le changement d’images dans un diaporama. Ici le caractère inattendu est lié à l’aléatoire qui prédispose le choix de l’image suivante. Les images appartenaient toutes à une catégorie déterminée.

Voici ci-dessous les patches pour cette interaction. J’utilise Osculator pour recevoir les infos de la wiimote et les convertir en message osc.

----------begin_max5_patcher----------
1913.3ocyZ0rbihCD9bxSAEWWu1HI.A6sLYNrGl+pclo1CSMUJrQNQ6hQT.d
RxL07NsOC6S1pe3O6HLPrb7lphQHDRe8mZ0cqV7iKuvdI6ARgs0uY8EqKt3G
WdwExpDUbQ08WXuI5gUIQExlYy1VlPJsmodDMVU4x+5WA00ktcCMk2FY6AsU
pdSYsNU0lEUt5NZ5s2jSVUpPQPvbmYVHfi3Bzq9WquV8JqXa1PRkM19c+6+X
ESr9SJ0V7ved4khelMRIIg9MxbdessF3eKJOMZCQ+C6Hon55VyRKadiqRYoO
xExBqOjyraDvb9yKI42PRiVlP5RIYzUkayqY+FATK8IFo0QqHcIOQcEzuq5S
24NZYZT8fwGHNsEURYocXaHTPv9RZF3H4b.tCaq5oxGyHp1aaOS8+5DVDuO9
5PSjPHnu9NZUImjWd6JVBKW8NNyCcBCbbm0So1Wtq7zknJh9FI9lnxxb5xsk
j1REUZBUpBhY6jsD155pqqu6b1Ft9hryg3Z5cumSkCti1mRSokznjZIqA66z
nZpE1eGzQ0Q2vTbGKurW81cwKKd.IJgkd636qCI8Izz+VzSE8gaQGvh6Urno
qYRTnav2xYlhdeJKOlj2W+FSV2+CKxHj3D5FIEoUrJJIY8JRbpZS05DtMoa.
hEJhBv5Bn5Bt1Z0FHOjwRqrtA5Qo5azB5ATGjTS4iUlZz0hnzTVkgfloZaUy
jVPquLQyooj64FGqM7URdPYi9Wr.ZLgB0aBMWrdQmcPnFadg8XxCzmsKZ5nr
X44K8.Am6Uav5YvF0to1mNtQ8mN+mNSjS.57C.6gTbNre..BIcDHEceoIa3N
laeJaA8jdMBjuHvy4ouy9lnMHMFGUFogC8L.EFNDCpgJl6h.9X.mGbkLHLn0
a2yIxDRrNED+fIDhUypfzc7uJfU2ezNa0Uw.iaEtFoZ+nDVud+Ao5GWe9e3c
GoIutzEzge85AC6EGAxCFJCYX+B.Cqg1iYu2mQR+HaaZ70bUqbVht4SL3Dpt
hFJBt2+wq+DcC4SQ2NZxGHWqG5bTJ28PXai4yFqH7PN3Cfii00u6sW8IsrF5
DxZ856XrbTnxbnzN7ymi5cSVHjY1kkOT4jStugg1lEz1nh.zPhfCX7h.vrhf
g1qqG1a7hvGR1VXVovwPRgx2+3jhemwWuZRo.FZHo.Ng4h2RSM7jALvPhgyD
lLdkYEArYDA2orp3JyJB9FRDlxRh+fda4clUL7LjXLk0DugrtzrRgg704Nkk
DulcepYkBC4tCMkUEeNyrxfg72gblfL7vie2nBAvPNJf9SPcJixeeKd7+IVO
Fcus4BWt3dYO6pO6JSMUBdSIUBOuXjgJ8Wnhvvn1zEXvzB74W+AqLVt1oef2
4L+Jgsaa0GMlzqDJUuP9mxrqzitUBKJdYT5sZYQ3ojE6U0RBmCQWpslpN0He
miR4pucz+wq+0bNvHVKtmRW.TWfpKH0EWc4j5TteUug1key+Gh7vpzo3prn4
bR1eOWeMijF22xSr++G2UuPYRtx0GeTbx1dNIQLdXo9tjxNY1BzeF7hoE6jB
LWTHD3OSaotuWIa2Tm4IRTFXl1RceOsSGYhCbq9bczt1OnYRRnaHGYX8PCf.
O+vYZKsCj4SgZN2zwetmAJ6wRiFUNl5lLQZIYSU+KRFEe8yLaQhub.sEgsEQ
sEcaK50VzusHtsXPawvVQqlTlJmTk.zFtLDf8cwyzVZvzw9DqFqEmdztI4kC
g.oR0SKANruMEuib6g8Okoks0H9myrVHh12ZgXmKVK3aC6N9kqrV7JqExM3a
sPjsBqEhLuXIL3C0drMmxr3Bfi1.+g9+PSFUar.FnN4BUbGl15eGdOZ0JRh0
hkaKKYbxmlqkTOkmji6n3zCxYvpOOEkQXWzIlyxxezZgXCQ5nJ2y4oHb3X9q
hDKP48z43NUrrnTRiDkkyJYB7zHvu08MyWpN5eMAg0DdgpI65nrw9kqmanvv
N2gGjWbD96tMOJFN8NZ76bPESl7GP0moyNV8a9XGpQTt3TmHRQm6o+.pvnZC
uh9T10tG3.0b39+AARmO.DF5IKIJ3MvGlSmYZYirSno6+ImIwmn9cm9KXayW
UqwU8YCX0IfGRQIMsYj9R6le6zn6nwwjztD8FZbFi6jq1AOVbP+vftb7d2UW
oqrk.udUfGsb3LBAQZDbJRRM.cwpOfgvl6NR3J1BiEZL7t6DPKDNWnFABkeo
EHTv756LAbgiAtnwCWP0ljpPqJMFFCsfwfV3DPKBLG2gbA.iRtiZMHX7vkG6
QKXggAlhaGEVm1hriDQxvE41aG.THzY.UgCApyAUELDn.mAPgGBTNmAP4Ojh
d3Y.TdCApfy.nbGBT3y.nFz+p+Y.TC5E06bX8bHPcNLdNnalWZimtigo.mAP
MXbuuz1o7FUv3tSCU0geWkcE+16LBdACh29lZA8fWry7.DB45JfoJpwp8SfO
9.wje0dCSx3WV8Qr+n.0Kr4D7Xrw4cN.0fTk+Kq2bwwmLHSg8m1BAOGgRu5X
eZKer7GXLot.+xF2wXfzwrfjeyOu7+TQdfGF
-----------end_max5_patcher-----------
et
----------begin_max5_patcher----------
814.3ocyW10aaBCEF95jeEGYod0xxr4i.rKlz1EaRSZR89spJGvIwafICbTS
ZU+uOaCjQaRZ.JiEoHbhwX+99jy4f8CiGglmtkkif2CeGFM5gwiFY5R2wnxe
OBkP2FFSyMCCElljvDRzjh6IYakl9+1NXAOlkCzLFvEfbECVjFGwxfOyWt4V
57bYFMT9CDPEQlQInIrHHO7VBHS0s19USaLWvBS2HLyscYmKRExb98LceDqo
3xtEaR3hXlznORYmqoxvUbwxayXgxB+Q7rUOCXa6parvXciiZdfa96LktQVM
UUyOOxXvz4+7sVnZRQKeyc9nHUrS8j4v0YoH8.db7X8kIMjoIr7b5R1ALMLl
QyPsv8Vuf68M90xww.AO8Uh+IMO4PySHNG29YbZb0cJlB4t0rhkEgfa5.QDr
6TK4A.42w7Dffw3iBEb6gh8LCGBL3vcVWfh2ogB7IUBvvPFILG3sgJjyREqY
EgJVSceQpXcLpP5JUlSEKQS.DWm62i.JeclZJW.Wk+jxQuSU14J9zud8W5oP
JeSQFqfhXIO+NDRg8uHBodCP52zLKGRiBnNJSl0Ulz2ARaxDfseOSFhINofO
sLUC67ZHyjxLt9jPgqTyHqeKFQJJN6btRz1GRnfNCnp5P+KJGwhUVruyvHdE
Txq8wQAtu1J18Je9.fm561yzonwNn80jCtbJ+HVSC+khN6+zSIZyLaKlPLMA
3yvHmivnftxnEwoTSV1o9Rm.nw0niQA74nfawQD1esEunxx6kd6b4spNDk9o
1t69hSDEFxhgzEvcbNZnra4tUbwc2u9szuWSkqz1r1ADuiq5hmnOBTGLdw5h
ZY3dgys8bZjywGy46i2qaO02WqdJFrttOUmLtt0Lqh4PtO6r2Fgp6+o9MOcS
VXEV2uAafrWsQrbIWPk7TQ8Qo2IYsQshGEwD08SBOZcppDUoLNQdV6TEtQpB
OXpR+lsyKJ843FRQMqAhRuykgTSp.Zv9bZZ1vpImlvI2AUSlCizfHJx.qJmF
k7Mr++877pSoJm+Cr5rkOICrpHNWhrxpI+CZpcLjhx+B7MMOe8NgprdMrR8i
GG+GzuKfPA
-----------end_max5_patcher-----------

Formation Max/MSP/Jitter et Max for Live 2011

La formation Max/MSP/Jitter et Max for Live 2011 s’est terminée le 18/2/2011. La formation a eu lieu au Jardin Moderne (Rennes). J’ai laissé le descriptif ici pour ceux qui veulent se faire une idée des sujets abordés.

Cette année, j’étais accompagné de David Segalen, Morgan Daguenet (http://mils.mils.free.fr/), Maël Teillant.

Les stagiaires ont été particulièrement accueillants et attentifs (merci à vous!) et l’option Max for Live a été adoptée par deux personnes et m’a permis de développer de nouveaux cours. Tout ça est très motivant.

Comme d’habitude, la formation est très tournée vers la mise en pratique, et nous l’avons conclue par l’accueil d’une classe de CM1 et CM2 de l’école du moulin de Rennes (les mêmes que l’an dernier avec un an de plus en somme). C’est pour moi l’occasion de demander aux stagiaires de présenter les patches qu’ils ont développés à un public.

En effet, souvent, lorsqu’on développe un patch, on créé une interface minimale, et parfois sujette à bogues. L’interface c’est bien sûr le premier contact avec l’installation (ou la régie). C’est ce qui va donner envie d’aller plus loin. Avoir une interface bien faite permet aussi de proposer à d’autres de prolonger ou reprendre son travail. Ensuite, des personnes qui n’ont pas suivis le processus de création du patche vont avoir tendance à l’utiliser en fonction de leurs propres repères, avec souvent un cheminent créatif différent du nôtre. ça peu donner des opportunités inédites, des compléments enrichissants ou encore un regard troublant sur les phantasmes du développeur.

Voici donc quelques vidéos des patches en action.

Le patche Max for Live montré ci-dessous est commandé par une interface développée sous TouchOsc, tournant sur un téléphone portable. Le patche permet de commander Live afin de réaliser un loop multi-canal avec le contrôle des différents tracks (record, play, stop, mute, niveaux, …).

Le patch Max5 montré ci-dessous permet d’asservir le pilotage d’un automatique à la position dans l’espace d’une lumière infra-rouge. Une caméra est fixée sur l’automatique. Dès que la lumière entre dans le champ de la caméra, l’automatique se déplace pour la mettre toujours au milieu du champ de vision de la caméra. Désolé pour la qualité de la vidéo.

Avec le patch de cette installation, ce sont les mouvements qui génèrent des sons et la position de la personne dans le champ de la caméra qui règle la spatialisation. Le retour vidéo joue aussi dans le sens de la fascination à être vu, donc à générer du son, …

Le patche montré ci-dessous est une séquenceur de cloches. Le patche lui même est d’ailleurs une belle mécanique, plutôt solide car il n’a pas déraillé d’un poil après le passage d’enfants assez enthousiastes. Réglages des retards, échos, répétitions, volumes, …

Le patche montré ci-dessous permet de lire les notes d’une partition en scratchant un disque alors que dans le même temps la vidéo capturée par une caméra remonte le temps quand les notes sont jouées et montre le temps actuel quand elles ne le sont plus (jouées).

Le patche montré ci-dessous est un séquenceur dont la particularité est d’avoir ses séquences construites à l’aide d’une Wiimote. On oriente, tourne la wiimote afin d’arriver sur une case de la piste choisie et en pressant A la note de cette piste sera joué au prochain tour. Simple et agréable à voir.

Le patche montré ci-dessous est un jeu vidéo. Un personnage doit parcourir un labyrinthe en évitant quelques pièges. Une fois la destination atteinte, le programme dit “game over” !

VJ generator

Le set de VJing présenté ici est particulier car il intègre uniquement des outils d’analyse de son et de génération de vidéos.
En effet, je souhaitais, cette fois-ci aborder le set en ayant aucune séquence préparées à l’avance mais plutôt des dispositifs permettant la génération de vidéos en direct, soit à partir d’images fixes, soit uniquement à partir des données résultant de l’analyse du son.
L’occasion était d’ailleurs idéale : Blockheads (Jean-François Vrod, Régis Boulard) est un duo de musiques improvisées. Il m’ont invité à me joindre à eux et à présenter un trio de musiques et vidéos improvisées au festival Musique en Mouvement de Jarny.
Donc, ici, pas question de préparer des séquences sur une musique différente de celle qui sera jouée le soir de la représentation.
Un autre objectif était aussi d’avoir disponible une panoplie d’instruments (dans mon cas des logiciels, patches) suffisamment riche et souple pour me permettre d’intervenir dans le jeu musical.
J’ai donc utilisé différents outils d’analyse de son  :
Mattrms~ : qui est un objet Max permettant l’analyse rms (root mean square) du signal audio. Cet objet fait partie d’une collection d’externals écris par le CNMAT de Berkeley.
FTM (Ircam) : qui est une bibliothèque de traitement en temps réel de données comportant plusieurs modules d’analyse de sons, spectres sonores, … Comme son nom l’indique (FTM = Faster Than Music) les objets de cette bibliothèque sont très rapides et permettent vraiment d’oublier les phénomènes de latence, …
sigmund~ et bonk~ : écrit par Miller Puckette, qui sont, respectivement, un analyseur de pitch et un détecteur d’événements percussifs. http://crca.ucsd.edu/~tapel/software.html

Les procédés vidéos sont originaux et faisaient intervenir de la génération de matrice vidéo, de la manipulation géométrique d’images, un multi-looper vidéo, de la génération de forme 3D, ….

La prise de vue s’est malheureusement fait en arrière des musiciens, on n’a donc pas le point de vue du public.

Formation Max/MSP/Jitter 2010

La formation Max/MSP/Jitter 2010 a eut lieu du 4 au 22 janvier 2010.

105 heures de formation, au Jardin Moderne à Rennes dont je laisse le descriptif détaillé ici. Trois semaines ça semble long, au départ, et finalement, je trouve que c’est vraiment la durée idéale. C’est surtout de voir l’autonomie des stagiaires à l’issue qui me fait dire ça. Mais aussi le fait qu’ils sachent traiter autant la vidéo que le son (ou tout autre technologie qu’ils affectionnent).

Les stagiaires venaient tous du spectacle vivant (la formation était conventionnée Afdas) et nous pourrons, dans le futur, l’ouvrir aux personnes travaillant en dehors de ce secteur.

La méthode pédagogique que je propose est résolument tournée vers la pratique. Je privilégie les exercices qui permettent d’approfondir d’une part les principes de l’environnement et d’autre part les objets les plus usuels. David Segalen m’a accompagné sur la dernière semaine où les stagiaires développent des projets (ou parties de) sur la base de leurs idées ou/et des propositions que nous pouvions avoir.

Le Jardin avait organisé le 22 janvier un apéro “Codelab” ainsi que, l’après-midi, la visite des élèves du CE2 et CM1 de l’école du moulin à Rennes. Les vidéos que je vous propose ci-dessous sont une sélection de moments  que j’ai pu filmer cette après midi là.

Virthea

Virthea is a search project about the use of virtual world (and very new technologies) in the context of the stage where comedians and musicians used to play.
Compagnie Dérézo (www.derezo.com) is heading this project in collaboration with taprik (www.taprik.net), for 3d and realtime programming, audio and video programming, and Le fourneau (www.lefourneau.com) for board support and web creation.
“Il était Xn fois …” was showed at Brest and Morlaix in the beginning of the year. This period was the first experiment of meeting a virtual world in a real piece. You can see below an extract of a show.
Le C.E.R.V (www.cerv.fr) is also supporting us with the loan of a Moven motion capture suit.
The 3d programming is built with Panda3d, which is a free open source game and simulation engine developed by Disney and maintained by Carnegie Mellon University’s Entertainment Technology Center.
The audio and video treatment are mostly made with Max/MSP/Jitter, a graphical programming environnement for manipulation of audio, video, robotics, … contents.

Commander son projecteur de l’Arduino

Diverses solutions existent pour obturer momentanément le faisceau d”un vidéo projecteur. Du bout de carton à l’iris motorisé, tout est possible pour des coûts fonctions de la complexité de la solution mise en oeuvre. Chacune n’a pas non plus la même élégance. Après, tout est affaire de goût et de budget.
L’autre solution pour se débarrasser du noir numérique est d’éteindre le projecteur. Parfois difficilement accessible de la régie avec télécommande ou pas, la solution pour le commander à distance (l’éteindre, l’allumer dans notre cas) est de lui envoyer un code de commande par son entrée série (présent sur presque tous les projecteurs).
Lorsqu’on consulte la liste des commandes qu’un projecteur peut recevoir sur son entrée série, on se rend compte qu’on peut parfois faire tout ce que propose le menu ou la télécommande et parfois plus.

Voici quelques photos du boitier ainsi que le plan de montage de l’électronique.

control_3

control_1

control_4

Coté technique, le boitier que je présente ci-dessous ne fait qu’allumer ou éteindre le vidéo projecteur. Il est construit sur la base d’un Arduino (NG ) auquel j’ai adjoint un circuit intégré Max232N de chez Texas Instrument afin de convertir le signal des sorties 0 et 1 de l’Arduino (RX et TX) vers un signal de type série, c’est-à-dire, compris entre -12 et +12V. Autrement dit on passe d’un protocole TTL à un protocole série 232.
Le circuit est trivial : on sort des sorties 0 et 1 (RX et TX), on entre dans le Max232 et on en ressort vers l’entrée série du projecteur. Le cablage du Max232 est largement expliqué dans sa documentation. Il faut connecter 5 condensateurs de 1 microF sur certaines entrées. J’ai ajouté un interrupteur et une led d’état.
Coté programmation, le code est là aussi très simple pour peu qu’on connaisse les codes de commande du projecteur.

Le code que j’utilise pour les projecteurs de la marque Nec est disponible ci-dessous.


const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
int projstate = 0;

byte P_ON[]={0x02, 0x00, 0x00, 0x00, 0x00, 0x02};

byte P_OFF[]={0x02, 0x01, 0x00, 0x00, 0x00, 0x03};

void setup() {
Serial.begin(38400);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
if (projstate == 0) {
Serial.write(P_ON, 6);
projstate = 1;
}
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
if (projstate == 1){
Serial.write(P_OFF, 6);
projstate = 0;
}
}
}

A.R.N.I.Q.

L’Appareil à Raconter N’Importe Quoi est un des dérivés de Lax, un looper audio/vidéo que vous pouvez trouver ici.

Cet appareil est un instrument d’orateur. Il s’inspire de toutes les ficelles qu’utilisent les politiques (mais pas qu’eux) pour remplir l’espace de mots et dire n’importe quoi tout en donnant l’impression de prononcer des phrases claires.
J’ai donc retenu quelques principes fondateurs :
– je parle avec une voix très affirmée,
– je prends mon temps pour dire ce que j’ai à dire, ça me permet de prendre le maximum d’espace,
– je laisse entre chaque mot un temps suffisamment long pour que l’on entende l’écho de ma voix à l’infini et suffisamment court pour empècher tout contestataire d’en placer une,
– je m’écoute parler,
Si vous adoptez cet appareil, il peut vous permettre de faire un discours de plusieurs jours, sans fatigue.

Le principe est simple :
– Vous parlez, dès qu’il y a un moment de silence l’appareil reprend un mot, une phrase que vous venez de dire et la rediffuse en audio et vidéo (bien sûr). L’appareil prendra au hasard l’une des 6 dernières phrases que vous venez de prononcer. Pour rendre tout ça plus vivant la rediffusion a lieu à des vitesses aléatoires.

Cet appareil a été adopté par une large communauté d’artistes, aussi fous et inventifs les uns que les autres :
La compagnie Vis Comica utilise la version audio de cet appreil dans son prochain spectacle,
Ezra dans Bionic Orchestra utilise la version complète en cloture de son spectacle.
La compagnie L’Unijambiste utilise cet appareil dans un atelier-spectale dont je vous parlerai prochainement.

L’extrait que vous verrez ci-dessous est un débordement ayant eu lieu après une représentation de Bionic Orchestra au Chabada (Angers). En fin de représentation Ezra a utilisé l’appareil (et a ainsi magnifié sa sortie). Une fois Ezra parti, ses dernières phrases occupaient l’espace. Un spectateur trainant par là m’a demandé comment tout ça était possible. Je lui est proposé d’essayer. Voici la suite.

Pour détailler le fonctionnement j’ajouterais ceci :
Comme je l’ai dit plus haut l’A.R.N.I.Q. s’appuie sur le logiciel Lax 2.1.
De Lax je n’ai gardé que la fonction looper audio/vidéo essentielle (Lax comporte un grand nombre de fonctionnalités …). J’en ai créé 6 en parallèle qui sont alimentés chacun leur tour lorsque l’orateur parle. Car en effet, l’appareil est aussi équipé d’un détecteur de mot et de silence qui permet d’activer l’enregistrement et la lecture.
L’A.R.N.I.Q. est développé avec Max/MSP/Jitter.

Voici un autre extrait de cette même après-représentation :