Projet #2 : Au coeur d’une scène multisensorielle 2


Résumé:

Dans le cadre du Master AST, l’occasion nous est donnée de travailler à l’élaboration d’un projet de création artistique. Familier des modifications de temporalité et de leurs effets sur la foule en tant que DJ, j’ai voulu inverser le phénomène pour que le corps puisse dicter lui même sa cadence à la musique. Ainsi, mon choix s’est porté sur l’élaboration d’un environnement multisensoriel visuel, lumineux et sonore qui se synchronise sur le battement cardiaque de l’utilisateur de manière à extérioriser cette rythmique corporelle intime. Le but final est de favoriser un état de relaxation tout en questionnant notre rapport à notre corps, et au monde qui l’entoure.

 


Inspirations et origines du projet

La révolution numérique et informatique a décuplé l’importance de la musique dans notre quotidien, en la rendant nomade, omniprésente.
Plus que jamais, la musique rythme notre vie et nous influence. la musicothérapie utilise d’ores et déjà des harmonies et des tempos agissant directement sur notre état nerveux, et induisant un état de relaxation.

 

Le battement cardiaque, notre propre tempo ?

Pour tout set de DJ, le tempo est un fil conducteur palpable, un référentiel quasi biologique capable de rassembler un public mais également de le diviser. Le DJ se doit en effet d’adapter son tempo aux envies de son audience, en démarrant la plupart du temps aves des titres lents en début de soirée, plus rapides lors de pics d’énergie, pour redescendre en fin de set. Dans cet univers des musiques actuelles, une légende subsiste: à un certain moment de la soirée, au détour d’un titre fédérateur, l’énergie semble soudainement décuplée et l’événement prend un tournant. Il se dit qu’à ce moment précis, le tempo utilisé (on parle de BPM pour Beats Per Minute ou Battements Par Minutes) soit parfaitement synchronisée avec les battements cardiaques de l’ensemble du public et cela insufflerait alors une vitalité spectaculaire à l’audience. Bien que difficilement envisageable, l’idée reste intéressante, pour les expérimentations qui peuvent être effectués en partant de cette idée, notamment parce les musiques électroniques possèdent en majorité un BPM contenu entre 110 et 140 battements par minute. Ces valeurs sont parfaitement plausibles et acceptables pour des battements cardiaques d’un individu en train de danser.

Daft Punk – Alive 2007, rappel final

Un environnement multisensoriel immersif

C’est avec cette légende en tête que l’idée d’associer rythme musicale et cardiaque m’est venue. J’ai alors restreint le cadre d’étude au prisme de la relaxation, pour deux raisons. D’abord pour simplifier les conditions expérimentales: en état de relaxation le rythme cardiaque varie peu et l’utilisateur peut se concentrer plus précisément sur son ressenti cardiaque. Enfin, parce que des études sur le sujet existent déjà ([1]Cardiovascular, cerebrovascular, and respiratory changes induced by different types of music in musicians and non-musicians: the importance of silence, [2]The sound of silence is music to the heart, [3]The effects of music on the cardiovascular system and cardiovascular health) et ont pu mettre en évidence l’influence des caractéristiques majeurs que sont les harmonies et le tempo. Ces découvertes ont ainsi donné lieu à plusieurs morceaux composés spécialement pour leurs vertus relaxantes, je pense tout particulièrement au morceau Weightless du groupe Marconi Union composé en collaboration avec la British Academy Sound Therapy qui servira de support à mes travaux.

J’ai rapidement imaginé des expérimentations impliquant non plus l’étude de notre fréquence cardiaque et de notre état de relaxation en fonction de certains tempos, mais voulu établir directement une relation d’asservissement de la fréquence cardiaque vers le tempo du morceau choisi. Enfin, j’ai ajouté à ce dispositif une dimension visuelle de manière à obtenir un environnement sensoriel global, qui tendrait non seulement à produire un état de relaxation, mais aussi à extérioriser notre rythmique interne, et la rendre directement perceptible, palpable.


Solutions technologiques

Une fois n’est pas coutume, j’ai voulu développer ce projet en utilisant les outils fondamentaux de la création artistique interactive que sont la plateforme de développement matériel Arduino, le langage de programmation visuel PureData ainsi que l’environnement de programmation Processing, de manière également à pouvoir transmettre mes travaux librement et que chacun puisse les réutiliser à la manière de ce que proposent les licences Creatives Commons.

Pour rendre ce projet viable, il m’a fallu développer un système capable de synchroniser le tempo d’une musique avec les battements cardiaques d’un utilisateur. À cela s’ajoute donc une dimension visuelle via la projection de formes en mouvement ainsi que d’une ambiance lumineuse, toujours synchronisée sur les battements cardiaques de l’utilisateur.

 

1) Récupérer le signal du battement cardiaque et l’exploiter

La capture et le traitement du signal cardiaque ont été réalisés grâce à une plateforme Arduino Mega 2560, «module d’acquisition» exploitant un capteur cardiaque, Pulse Sensor. L’ensemble permet la détection des battements et le calcul de la fréquence cardiaque de l’utilisateur.

Détection des périodes temporels entre chaque battement, en millisecondes.

 

2) Adapter une musique à la fréquence cardiaque

La fréquence cardiaque de l’utilisateur est envoyée vers PureData, qui accélère ou décélère la vitesse de lecture du titre utilisé pour que son tempo corresponde à cette fréquence cardiaque, tout en conservant la tonalité du morceau.

Capture du spectre sonore d’un morceau sur quatre temps.

 

3) Adapter l’ambiance lumineuse et la projection de formes en mouvements

La fréquence cardiaque est ensuite transférée vers Processing qui génère à partir de celle-ci une animation cadencée.

Animation sous Processing interagissant avec la fréquence cardiaque de l'utilisateur.

Animation sous Processing interagissant avec la fréquence cardiaque de l’utilisateur.

Le signal cardiaque brut est traité (lissé et moyenné) par l’Arduino pour influencer directement l’environnement lumineux produit par le ruban LED (issu et modifié d’un kit disponible dans le commerce).

Ruban LED interagissant avec le signal cardiaque de l'utilisateur.

Ruban LED interagissant avec le signal cardiaque de l’utilisateur.

 

4) Permettre un contrôle MIDI de l’installation

Enfin, j’ai décidé d’intégrer un contrôle MIDI via un contrôleur classique (le LPD8 d’Akai) pour pouvoir contrôler les fonctionnalités de mon projet, affiner le traitement du signal cardiaque en fonction de l’utilisateur, et enfin modifier les teintes chromatiques de l’environnement visuel (animation sous processing et ruban LED).


Développement technique et fonctionnement détaillé

Le Battement cardiaque et sa captation

Le Coeur, pompe du système circulatoire

Schéma du fonctionnement cardiaque, coupe longitudinale.

Notre sang, oxygéné après un passage par les poumons, est éjecté du ventricule gauche vers l’ensemble du corps à une certaine fréquence (à l’instar tempo, on parle aussi de BPM pour Battements Par Minutes): il s’agit de l’étape de la systole qui correspond également au « pouls » que nous percevons.

Sur les sujets les plus jeunes, on peut faire face à une légère arythmie respiratoire induisant une augmentation de la fréquence cardiaque en phase inspiratoire, puis diminution en phase d’expiration. Ces irrégularités ne perturbent cependant pas nos mesure car l’algorithme de calcul de la fréquence cardiaque se base sur les dix derniers battements et pallie donc ces variations.

Pulse Sensor, notre capteur cardiaque

On peut mesurer cet afflux sanguin à travers la vascularisation des capillaires digitaux, et déterminer avec précision la fréquence cardiaque grâce à la détection des pics systoliques (qui correspondent donc à nos pulsations cardiaques et nous permettent de calculer avec précision la fréquence cardiaque).

Vascularisation des capillaires digitaux.

Pour cela nous utilisons un capteur photométrique qui mesure grâce à une LED et une résistance photométrique le changement de réflectivité de la peau, directement imputable à la vascularisation des capillaires et reflétant donc l’activité cardiaque.

Capteur photométrique cardiaque Pulse Sensor.

Ce capteur passif est donc pourvu d’un transducteur: le capteur photométrique, traduisant la réflectivité de la peau, donc sa vascularisation, en une résistance électrique. Ce capteur intègre également une électronique de conditionnement permettant non seulement d’adapter la caractéristique électrique obtenue en signal exploitable tout en protégeant ses circuits, mais également d’amplifier et de filtrer ce signal: autant de choses qu’il ne sera pas nécessaire d’intégrer à notre environnement logiciel.

Signal cardiaque obtenu à l’aide du capteur Pulse Sensor.

Basé sur la mesure de la vascularisation des capillaires digitaux, ce projet se trouvera limité face à des sujets atteints de maladies telles que le diabète et certaines maladies cardio-vasculaires, mais reste utilisable par une grand majorité d’utilisateurs.

 

La réception et le traitement via la plateforme Arduino

Le signal brut

La plateforme microcontrolleur Arduino récupère le signal analogique brut (une tension entre 0 et 5V) et convertit ce signal en information numérique sur 10 bits (entre 0 et 1023.)

La détection des pics et des creux 

Le programme Arduino met en place un seuillage, puis la détection des maximums et minimums du signal numérique traité. Ces informations nous permettent de définir les pics (battements) et de pouvoir calculer les intervalles temporels entre chacun de ces battements.

Détection de la période (P) entre deux battements.

Lorsque le seuil de la moitié du pic précédent est détecté, on admet que l’on capte un nouveau battement.

Détection d’un nouveau battement.

Cette partie du programme ainsi que l’algorithme de détection du BPM ont été obtenus grâce au code librement disponible du Pulse Sensor.

Le calcul de la fréquence cardiaque

L’algorithme de calcul au meilleur rapport précision/calcul consiste à utiliser les intervalles temporels entre chaque pic de la manière suivante:

Une moyenne des dix derniers intervalles est fait, à chaque nouveau battement détecté. La fréquence en Hz (seconde-1) est l’inverse de la période T: (1/T). Ainsi, on convertit l’intervalle temporel moyen en milli-seconde (1*10-3 seconde) par une valeur en minute (on  divise cette valeur par 60 000). Puis on calcule l’inverse de cette période en minute. On obtient une valeur en minute-1, notre fréquence cardiaque, soit le nombre de battements que notre coeur effectuera en 60 seconde, approximation calculée sur les dix derniers battements.

L’envoi de la fréquence cardiaque

La fréquence cardiaque qui varie à chaque nouvelle détection de battement, est envoyée par liaison série à PureData, avant être renvoyée par liaison OSC à Processing.

 

L’exploitation du signal

Exploitation sous PureData

Le programme conçu sur PureData reçoit la valeur de la fréquence cardiaque, et calcule en temps réel la différence de tempo de la musique (ce dernier est saisi manuellement dans cette version du projet, mais automatiquement calculé durant les 30 premières secondes dans mes travaux les plus récents) et de la fréquence cardiaque pour ajuster la vitesse de la musique à toutes les variations de la fréquence cardiaque grâce au patch readanysf. Comme tout objet sonore, la modification de la vitesse de lecture (pitch) affecte directement la hauteur du morceau, le système réajuste alors celle-ci via l’objet soundtouch pour pallier à ces modifications et assurer une tonalité toujours identique à la musique originale.

Capture d’écran du programme développé sous PureData.

Exploitation sous Processing

Le programme développé sur PureData envoie par protocole OSC la fréquence cardiaque reçue depuis l’Arduino ainsi que d’autres éléments que nous étudierons dans la suite. Processing initialise un motif visuel correspondant à une sphère dont le diamètre dépend de la fréquence cardiaque, tout en décrivant une orbite circulaire dont la vitesse angulaire dépend également de cette fréquence.

Exploitation du Ruban LED

Pour la partie électronique, je me suis inspiré du projet et du schéma ci-dessous, pour utiliser un ruban LED exploitant directement le signal cardiaque de l’utilisateur.

ruban_leds_rgb_uln2803

Schéma électrique de l’exploitation du ruban LED.

Pour ce faire, le signal brut reçu depuis le capteur cardiaque est convertit d’un intervalle [0;1023] à un intervalle [0;255] grâce la fonction map. Puis, ce signal est filtré via la fonction smoothAprès un léger délai, l’Arduino reçoit, lorsqu’elles ont été modifiées, les valeurs RGB contrôlées par MIDI puis transmises par PureData via une liaison série, et transforme ces valeurs en indice multiplicateur entre 0 et 1. Finalement, chaque couleur est directement affectée par le signal cardiaque lissé, proportionnellement à l’intensité attendue pour celle-ci: ainsi, quelque soit la couleur choisie, l’intensité lumineuse du ruban LED reflétera toujours le signal cardiaque capté.

Schéma électrique d’une LED RGB.

Le contrôle MIDI

Pour pouvoir affiner le traitement du signal brut utilisé par le ruban LED, mais également pour pouvoir contrôler la couleur utilisée par ce dernier ainsi que par le motif développé sous Processing, j’ai décidé d’intégrer un controlleur MIDI à cette installation, tout en facilitant le contrôle de l’interface PureData, centre névralgique de ce projet.
Ainsi, mon LPD8 d’Akai, m’as permis de manipuler directement la couleur voulue au format RGB (codée pour les LEDs via une PWM sur 8 bits pour chaque couleur, soit 256*256*256: un peu plus de 16 millions couleurs théoriquement possibles) via 3 potards, l’un contrôlant l’intensité du rouge, le second du vert, et le dernier du bleu.

Le contrôleur MIDI LPD8 d’Akai.

Ce dernier m’a également permis de contrôler la lecture, la pause ou l’arrêt de la composition sonore, mais également d’initier ou de clore les connections avec l’Arduino (pour la réception de la fréquence cardiaque) et avec Processing (pour transmettre cette fréquence cardiaque). Enfin, je peux également, choisir un filtrage plus ou moins fort pour la luminosité du ruban LED, (lissant plus ou moins le signal cardiaque afin d’obtenir une intensité lumineuse parfaitement modulée par celui-ci) en fonction des utilisateurs et du signal brut perçu qui peut varier.

 


Intégration finale

Le schéma proposé ci-dessous reprend l’ensemble des éléments et échanges mis en oeuvre au sein de ce projet:

Schéma complet de l’installation.

 

 


Conclusion:

L’environnement créé permet bel et bien de libérer et d’extérioriser notre rythmique intime tout en favorisant un état de relaxation, malgré la propension de certains utilisateurs à se concentrer sur l’aspect sonore, délaissant la dimension visuelle et laissant aux spectateurs le plaisir de percevoir visuellement un battement cardiaque qui n’est pas le leur.

Cette installation fondamentalement interactive laisse le champ libre non pas à nos mouvements, à nos gestes et notre volonté comme on peut le voir la plupart du temps mais nécessite au contraire de se laisser porter par une ambiance biologique, imprégnée de notre propre cadence, notre physiologie.

Ce projet m’a permis, après m’être familiarisé avec la boite à outils du développeur créatif et interactif, de toucher du doigt les limites mais également les perspectives incroyables et désormais à notre portée de ces extraordinaires outils numériques. Il me reste beaucoup à faire non seulement pour ce projet mais également pour de nombreux autres que j’envisage désormais sereinement grâce à l’expérience acquise sur celui-ci.

Avancées en cours

Désireux de poursuivre mes travaux, j’ai d’ores et déjà pu améliorer la partie sonore sous PureData, en permettant de choisir la musique voulue. Une analyse du tempo de celle-ci a lieu durant les 30 premières secondes: s’il est supérieur à 100, la synchronisation au tempo se base sur une valeur du tempo divisé par 2. Une musique avec un tempo de 120 Battements Par Minute sera alors parfaitement synchronisée avec une fréquence cardiaque de 60 Battements Par Minute par exemple. Si le tempo est inférieur à 100, alors il se synchronisera directement sur le battement cardiaque.

Enfin, ces travaux permettent de synchroniser tempo musical et battement cardiaque en asservissant le premier à la fréquence du second mais ne permet pas une mise en phase parfaite de ces deux rythmiques, qui sont parfois légèrement décalés bien qu’aux même fréquences. Je travaille actuellement à la mise en phase de ces éléments, plus connu sous le nom de « BeatMatching ».

Avancées à suivre

Enfin, je souhaiterais poursuivre mes recherches à travers plusieurs axes d’étude:

Améliorer l’environnement en mettant notamment en place un prototype électronique plus professionnel, en améliorant l’animation visuelle sous Processing et en intégrant éventuellement un élément scénographique à part entière pour matérialiser le cocon que j’essaie de recréer.

J’aimerais également pouvoir intégrer ces travaux au sein d’une application mobile, qui pourrait alors s’étendre à une application de running et qui pourrait se baser sur le rythme cardiaque mais également sur la cadence de course. Ce type d’utilisation s’est particulièrement médiatisé ces derniers temps grâce notamment aux travaux menés par Spotify mais également par des start ups développant des applications tels que Cruise Control ou encore Weav.  Nul doute que ce genre d’applications finira par se démocratiser.

Cet article est un premier jet, une démonstration vidéo viendra bientôt le compléter. Dans tous les cas, n’hésitez pas à me contacter ou à laisser un commentaire pour toute question, je serais ravi d’y répondre.


Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

2 commentaires sur “Projet #2 : Au coeur d’une scène multisensorielle

  • MONTEBRUN

    Bonjour, monsieur ASTOURIC,

    Nous travaillons actuellement sur un nouveau projet lié au bracelet connectés, donc à la détection des pulsations cardiaques. Pouvez vous me donner votre sentiment sur la détection d’un rythme irrégulier et pensez vous que la réception et le traitement via la plateforme ARDUINO et notamment que l’algorithme de détection des BPM du PULSE SENSOR nous permette de détecter un rythmes cardiaque irrégulier ? Si oui, avez vous déjà eu l’occasion de déterminer la méthode à suivre et accepteriez de nous aider sur ce point ?

    Bien cordialement,
    Sébastien MONTEBRUN

    • Romain Auteur de l’article

      Bonjour Sébastien, et merci pour votre commentaire que je viens de découvrir.

      L’algorithme que j’utilise (fournis avec le Pulse Sensor) est très classique : il se contente de faire la moyenne des 10 derniers intervalles entre chaque pulsation, pour calculer un BPM « moyen » (le BPM étant par nature un paramètre fréquentiel variant à chaque pulsation, et donc impossible à mesurer comme une donnée « instantanée »).

      Ainsi, le rythme cardiaque étant par nature irrégulier, et la mesure du BPM étant justement basé sur une moyenne, je ne vois pas de problème à mesurer un BPM (aussi irrégulier soit-il) avec cette méthode.
      Pour ma part, j’utilisais en plus lors de ce projet un filtre récursif permettant de lisser un peu plus le BPM mesuré pour l’adapter à l’écoute de musique.

      Dans votre cadre, le couple Arduino + Pulse Sensor est un excellent moyen de créer un prototype à moindre coût.
      Je serais ravi de pouvoir vous en dire plus, n’hésitez pas à me contacter via mon adresse rom.astc [at] gmail.com, et si besoin à me proposer une entrevue (j’enseigne actuellement dans le 15ème arrondissement).

      Excellente journée,
      Romain