Tech

Cette page contient diverses informations sur les techniques électroacoustiques.

Mébiii, une interface de détection de position tridimensionnelle en champ proche

Le travail gestuel sur du son fixé ou des dispositifs électroniques passe souvent par une approche trop paramétrique des choses. Dans un travail purement hors-temps, cela ne pose pas de problème car chaque paramètre peut être ajusté l'un après l'autre sur une ligne du temps (cas de la composition sur support). Par contre si l'on désire travailler sur plusieurs dimensions simultanément, on arrive rapidement à avoir besoin d'une multitude de curseurs ou potentiomètres et à se retrouver avec des consoles de commande gestuelles aussi complexes et encombrantes qu'un cockpit de 747 (et encore à condition d'avoir le budget). Une autre approche consiste à assigner une commande à différentes variables et à passer de l'une à l'autre via des notions de pages ou de couches. Ces deux approches entraînent un travail séquentiel et fondé sur une approche trop analytique du son qui est souvent incompatible avec l'expressivité artistique. Sans compter que nous n'avons de toutes façons que dix doigts.

 

Vue générale de la Mébiii placée sur la main.

 

Il y a quelques années, en travaillant avec un violoniste je me suis rendu compte de la rapidité et de la facilité avec lesquelles l'instrumentiste changeait de mode de jeu et donc de sonorité tout en n'ayant qu'un nombre limité d'accès gestuels.  Je travaille depuis lors sur des dispositifs visant à allier la richesse et la finesse de création sonore du studio avec la ductilité des instruments acoustiques (richesse des variations et surtout passages rapides d'un mode de jeu à l'autre). L'idéal étant à chaque moment de pouvoir passer d'un son A à un son B sans devoir appuyer sur cinq boutons, cliquer sur trois menus ou tourner dix potentiomètres.

 

J'ai depuis développé un important travail sur la notion d'interpolation, qui facilite l'action sur des dizaines de variables à partir d'un nombre d'axes de commande réduit. Cette stratégie s'est avérée extrêmement efficace et fertile avec des interfaces à deux degrés de liberté (tablettes graphiques Wacom ou Magic Trackpad Apple par exemple) et un pilotage d'interpolation avec des zones d'influence placées de position et de taille variable. Il y a un an j'ai cherché le moyen de développer ce travail sur trois dimensions en utilisant une interface capable de suivre des mouvements avec une résolution identique sur chaque dimension. Par exemple, une tablette Wacom assure une détection de pression à côté de la détection de position bidimensionelle mais la pression ne joue sur quelques millimètres seulement. J'ai donc cherché un outil capable de détecter la position d'une main dans un espace d'environ 50 x 50 x 50 cm à prix abordable. Je me suis rendu compte qu'il n'existait rien sur le marché et ai donc décidé de produire ma propre solution.

 

Après quelques mois de réflexion et divers développements, j'ai fini par aboutir à la Mébiii.

 

Ci-dessous vous pouvez écouter et voir la Mébiii en action (application à de la granulation).

 

 

Il s'agit d'un gant dont les déplacements sont captés par une télécommande de console Wii. Pour ce faire, le gant est muni de trois diodes lumineuses émettant dans le registre infra-rouge, registre qui correspond à celui utilisé par une caméra placée à la pointe de la Wiimote (c'est  cette caméra qui détecte les rayons envoyés par la barre à placer au-dessus du téléviseur quand on joue avec la Wii). La télécommande est à même d'assurer la détection de plusieurs points sur deux dimensions. En théorie elle est aussi capable d'effectuer une détection de position sur la troisième dimension (distance entre la source d'infra-rouges et la télécommande) par estimation de la taille des points détectés. Malheureusement la résolution obtenue est insuffisante. C'est pourquoi j'ai amélioré le système en plaçant les diodes dans une configuration spécifique en triangle isocèle. Cette configuration spécifique permet de savoir quel sommet du triangle se trouve à quel endroit à chaque instant dans la détection bidimensionnelle. Dès lors, on peut également déterminer en permanence la taille de chaque côté du triangle et selon qu'un côté apparaît comme plus court ou plus long pour la détection, on sait si la main est proche ou éloignée du capteur.

 

Le logiciel d'analyse de position et de distance a été programmé en langage Java en tant qu'objet externe  pour Max/MSP. Il inclut une calibration pour ajuster le minimum et le maximum de distance sur l'axe vertical. Les limites pour les autres axes sont déterminés par l'angle de vision de la caméra, qui est malheureusement assez étroit. Il est donc nécessaire de placer la télécommande relativement loin au-dessus de la main pour obtenir une surface de détection suffisante, les diodes étant placées sur le dos de la main. Un grand pied de micro permet un placement de la Wiimote à une distance d'environ 1 m au-dessus de la main.

 

L'utilisation de la Wiimote par rapport à la très tendance Kinect offre deux avantages :

  1. Une fréquence de rafraîchissement des données très largement supérieure (200 Hz contre 30 Hz).
  2. Un traitement intégré de l'image infra-rouge et une fourniture directe des positions des points détectés (l'ordinateur est donc libéré du poids informatique de ce traitement).

 

A gauche la carte Bluetooth au-dessus de l'Arduino, à droite les diodes en configuration triangulaire.

 

La Wiimote est reliée à l'ordinateur via une connexion Bluetooth. Sur celui-ci un patch Max/MSP traite les données puis les utilise pour synthétiser ou transformer du son. Dans les deux cas, la stratégie de mapping utilisée consiste à interpoler des presets correspondant aux huit sommets d'un cube. Un travail préparatoire de création des presets est donc nécessaire. Une fois celui-ci réalisé, l'avantage de cette solution est de rendre possible la modulation de bien plus de paramètres que l'interface gestuelle ne compte de degrés de liberté. La Mébiii autorise donc l'exploration d'un espace paramétrique virtuel, ce qui permet la création de figures sonores originales et très variées. Dans le cas de la transformation sonore, le dispositif permet d'accumuler jusqu'à huit traitemements au choix placés en série. Pour chaque couche de traitement, on mémorise huit presets. La configuration globale reprenant le choix des traitements et des presets pour chaque couche est mémorisable également.

 

La Mébiii possède comme avantage de ne pas encombrer les doigts, les laissant disponibles pour travailler avec les interfaces gestuelles traditionnelles (trackpad, curseurs, tablettes diverses...). 

 

Le développement est décrit dans cet article (.PDF) publié conjointement à la présentation de la Mébiii aux Journée d'Informatique Musicale (JIM) 2012 durant le mois de mai.

 

Cependant, la Mébiii telle que décrite dans l'article entrait en fonction dès que la main pénétrait dans l'angle de vue de la caméra, ce qui signifiait qu'il était difficile de faire débrayer l'instrument sans renoncer à . C'est pourquoi j'ai amélioré l'interface en y ajoutant un capteur de pression placé entre le pouce et l'index. Ce capteur fait office de commutateur marche/arrêt, qui bloque le flux des données issues de la Wiimote dans le patch Max/MSP. Pour prétraiter les données de ce capteur il a été relié à une carte Arduino de petite taille et alimentée par une faible tension électrique, en l'occurrence une Pro Mini dans sa variante Wattuino proposée par le fabricant allemand Watterott.

 

Au-dessus de de la carte Wattuino se trouve une carte additionnelle Bluetooth Mate Silver de Sparkfun renvoyant également les données via une liaison sans fil.

 

L'ensemble des composants est alimenté par trois accumulateurs Ni-MH au format AA, ce qui résulte en une tension d'alimentation électrique de 3.6 V. La nécessité d'avoir des angles d'émission suffisamment larges a mené à choisir des diodes de puissance (1 W) en lieu et place de diodes conventionnelles. Cependant il n'a pas été nécessaire de les utiliser à pleine puissance, ce qui a permis de limiter la consommation de courant (100 mA) et d'éviter tout échauffement notable du circuit.

 

Le capteur de pression jouant le rôle de commutateur.

 

Des développements ultérieurs pourraient viser à intégrer dans le circuit un commutateur marche/arrêt et un circuit signalant par un témoin lumineux que la tension d'alimentation atteint un minimum critique lorsque les accumulateurs se déchargent. Les accumulateurs AA pourraient être remplacés par un accumulateur Li-Po afin de réduire le poids sur le poignet, bien que celui-ci ne soit pas gênant. D'autre part la capacité des accumulateurs Li-Po est pour l'instant limitée en regard de leur taille et de leur prix. Par ailleurs, pour l'instant les diodes sont indépendantes de la carte Arduino. En les y reliant en les alimentant avec un signal pulsé (PWM) il serait envisageable de réduire leur consommation cependant la tension d'alimentation nécessaire est sans doute juste au-dessus de ce que peut fournir l'Arduino, à moins de remplacer la carte 3,3 V par une variante à 5 V (mais qui du coup exigerait une alimentation capable de donner une tension plus importante). 

 

L'intégration des différents circuits et l'aspect esthétique pourraient être améliorés également. A suivre...

 

Enregistrer discrètement avec les micros OKM II

Pour le prise de son j'utilise depuis longtemps un couple microphonique OKM II de la firme allemande Soundman. Ce petit système stéréo a l'apparence d'une paire d'écouteurs de balladeurs. Ceux-ci sont très légers mais surtout discrets. J'emploie ce couple notamment pour les enregistrements de paysages sonores urbains afin d'éviter les sempiternels "Bonjour micro !", "C'est pour la télé ?" et autres commentaires ineptes chaque fois qu'un microphone est visible. En outre, le fait de porter ce qui apparaît comme des écouteurs donne un prétexte pour stationner à peu près n'importe où en ayant l'air occupé lorsqu'on veut capter le son sans donner l'impression d'être attentif à ce qui se passe sur place.

 

Lire la suite

Nouvelles technologies tactiles a la conférence CHI 2011

Deux nouveautés intéressantes ont été présentées à la conférence Computer Human Interaction 2011. La première est une nouvelle technique de détection multitactile optique. Au contraire de la plupart des techniques accessibles sur les écrans actuels, elle permet la détection de plus de deux doigts. Basée sur un ensemble d'émetteurs et récepteurs infra-rouges placés sur le pourtour de l'écran couplés à une modulation de fréquence, elle est adapatable à n'importe quel type de moniteur. D'autre part, le dispositif de détection peut être placé à distance de l'écran. Enfin, et ceci ouvre des perspectives, on peut imaginer placer une série de cadres de détection les uns derrière les autres et par là créer un système de détection tridimensionnel. Il est à noter que les couples émetteurs-récepteurs utilisés sont semblables à ceux utilisés sur les télécommandes de télévision et autres appareils domestiques, le coût est donc limité.

 

 

Une autre nouveauté digne d'intérêt : une technologie autorisant à rendre la surface d'un écran tactile glissante ou au contraire agrippante selon par exemple l'endroit de l'écran où se pose un doigt (mais pourquoi ne pas imaginer aussi que cette caractéristique change plutôt suivant les circonstances, de manière à obtenir une sorte de retour de force ?). Ici, rien de vraiment révolutionnaire non plus, mais à nouveau une utilisation intelligente d'une technologie connue : l'effet glissant/agrippant est obtenu par de simples actuateurs piézo-électriques, mais la fréquence utilisée rend la vibration imperceptible en tant que telle.

 

 

Une fois de plus, il ne reste qu'à attendre que cela arrive sur un appareil près de chez vous. Ou pas.

 

 

A la découverte de Processing

Processing est un langage de programmation très intéressant. Basé sur le langage Java, il peut donc fonctionner sur à peu près n'importe quel ordinateur (mais aussi sur un smartphone ou une tablette sous Android, un système d'exploitation lui aussi fondé sur Java). Il est particulièrement adapté à la création visuelle (2D ou 3D). Il intègre des primitives de dessin, de manipulation d'images et de texte. Il m'intésse tant pour développer de futurs projets intermedia que pour réaliser des interfaces de commande innovantes pour la création sonore. Fonctionnant sur le principe de la programmation procédurale, il constitue un complément intéressant à Max/MSP/Jitter, avec lequel il peut communiquer facilement, via le protocole OSC par exemple.

 

Il est facile d'exporter les programmes réalisés (appelés "sketches") sous forme d'applets Java et donc d'insérer ceux-ci sur des pages Web. Il existe de nombreuses bibliothèques d'extension qui ajoutent des fonctions supplémentaires (pour la création sonore, la vidéo, etc). Par ailleurs, de par ses fondations Java, le langage est  dès lors extensible directement par des éléments Java, ce qui offre des possibilités immenses.

 

Après quelques semaines d'aprentissage en solo, voici un des essais auxquels j'aboutis. C'est un exemple purement visuel qui intègre des mouvements pulsatoires en 3D. Pour les utilisateurs de Windows qui auraient du mal à faire fonctionner l'applet, il est possible d'avoir le document sous forme d'une application à télécharger ici.

 

Au fait, Processing est gratuit. Si vous êtes intéressé, je vous conseille d'aller sur le site officiel, on y trouve des tutoriels, un forum et plein d'informations pour démarrer.

 

Surfaces multitactiles : quoi de neuf ?

Petite évolution des tablettes Wacom Bamboo : une nouvelle série, estampillée "special edition" permet désormais de suivre des gestes utilisant quatre doigts au lieu de deux jusqu'à présent. Pour l'instant, Wacom emploie essentiellement les positions des doigts pour reconnaître des gestes spécifiques assignés à des opérations précises : effectuer des translations, des rotations, des pincements, exactement de la même manière qu'Apple avec ses trackpads (sauf que les Wacom peuvent aussi fonctionner sous Windows). A moins de se lancer soi-même dans de la programmation, il n'existe pas de solution pour récupérer ces positions sous une forme normalisée (TUIO par exemple) ou dans un logiciel de création musicale, aussi ouvert soit-il (MaxMSP, Bidule, Reaktor, etc). Peut-être cela serait-il possible via Osculator ?

 

Par ailleurs, sauf erreur de ma part, le suivi des doigts n'inclut pas de suivi de la presssion (même indirectement via la surface des doigts en contact avec la tablette) et on est loin des dix doigts détectables sur un iPad, un iPhone et plus loin encore des onze doigts ("je te le rends tout de suite") détectables par le Magic Trackpad. Bref : pas mal mais peut faire mieux.

 

Mis à part une surface multitactile faite maison ou un Magic Trackpad, il semble donc que pour l'instant il y ait très peu de solutions pour un suivi gestuel sur deux axes avec détection simultanée de la pression. Même l'iPad ne semble pas capable de rapporter une mesure de la pression des doigts. Une firme coréenne inconnue semble sur le point de lancer quelque chose associant suivi multitactile avec détection de pression. Le prototype fonctionne pour l'instant en USB sous Windows 7 et est compatible avec le protocole TUIO.

 

Reste que tout cela continue à évoluer rapidement. Avec l'apparition d'appareils qui concurrencent l'iPad avec plus ou moins de bonheur, nul doute que l'offre des tablettes tactiles va évoluer.

 

Autre interface gestuelle intéressante : le (ou la?) Kinect de Microsoft, développé(e) pour rendre la console de jeux XBox 360 plus attractive face à la Wii de Nintendo. Basée exclusivement sur l'utilisation de caméras, Kinect permet le suivi gestuel et offre une détection de distance, le tout en se passant de manettes (plus de risque de défoncer votre téléviseur en jouant à la pétanque virtuelle). Des développeurs s'attaquent d'ores et déjà à le/la détourner afin de pouvoir l'utiliser dans Max/MSP.

 

Affaire à suivre...