Jusqu’à 6 mains simultanées peignent le même fluide génératif — la version multi-joueurs de Fluid music, pour créer et jouer à plusieurs devant une seule caméra.
Vue d’ensemble
Fluid music 2 reprend l’idée de l’original — les mains détectées par webcam peignent une simulation de fluide GPU en temps réel tout en jouant une note chacune — mais l’étend au multi-joueurs : jusqu’à 6 mains sont suivies simultanément, permettant à plusieurs personnes de peindre et de jouer ensemble devant la même caméra. Chaque main garde sa propre couleur et son propre oscillateur d’une frame à l’autre, même quand les mains se croisent ou que les joueurs entrent et sortent du cadre.
Comme dans la version originale, la position et la vitesse de chaque main pilotent en parallèle une giclée de couleur dans le fluide et un oscillateur audio, avec des gestes reconnus (poing, pincement, geste « ok », deux doigts) pour déclencher des effets spéciaux. Les modes réactifs au micro et à l’horloge MIDI sont également disponibles pour faire tourner l’appli comme un visualiseur musical sans mains.
Fonctionnalités
- Suivi jusqu’à 6 mains — plusieurs joueurs peuvent peindre et jouer en même temps devant la même caméra, détection GPU avec repli CPU.
- Identité persistante par main — chaque main garde sa couleur, son oscillateur et son historique de gestes propres d’une frame à l’autre, même quand les mains se croisent ou disparaissent temporairement du cadre.
- Simulation de fluide GPU partagée — toutes les mains peignent dans la même simulation de fluide WebGL en temps réel.
- Synthé multi-voix — la main la plus basse mène, la suivante suit un ratio harmonique, les autres chantent librement quantifiées sur la gamme choisie.
- Reconnaissance de gestes par main — poing (pause individuelle), deux doigts (efface), pincement (vortex), geste « ok » (salve en anneau).
- Mode micro et mode MIDI clock — fonctionne aussi sans caméra, réactif au micro ou synchronisé sur une horloge MIDI externe.
- Budget de rendu adaptatif — le nombre d’impulsions visuelles par frame s’ajuste au nombre de mains détectées pour rester fluide même à 6 mains.
Sous le capot
La difficulté propre à la version multi-mains : MediaPipe renvoie les mains détectées dans un ordre arbitraire à chaque frame. Un système de « slots » persistants réassocie chaque détection à la main la plus proche de la frame précédente (appariement glouton par continuité de position du poignet), et libère un slot après une seconde sans détection. Tout ce qui est propre à une main — oscillateur, historique de gestes, temps de recharge, couleur — est indexé sur ce numéro de slot stable plutôt que sur l’ordre brut renvoyé par le détecteur, ce qui évite qu’une main ne change de couleur ou de son au hasard des frames.
Le détecteur de mains tourne dans un Web Worker séparé pour ne jamais bloquer la simulation de fluide, avec un délégué GPU (repli CPU si indisponible) pour absorber le coût de l’inférence sur jusqu’à 6 mains. Côté audio, la voix la plus grave mène harmoniquement, la deuxième suit un ratio harmonique fixe par rapport à la première, et les mains suivantes improvisent librement mais toujours quantifiées sur la même gamme musicale — pour que 6 personnes qui jouent en même temps restent toujours harmoniquement cohérentes entre elles.
Contrôles
| Geste | Action |
|---|---|
| Poing fermé | Pause / silence cette main uniquement |
| Deux doigts tendus | Peint en noir (efface) |
| Pincement (pouce + index) | Crée un vortex |
| Geste « ok » | Salve en anneau |
| Paume ouverte / bords de l’écran | Salves supplémentaires |
Stack technique
- Vanilla JS (modules ES6), zéro framework
- MediaPipe Tasks Vision (HandLandmarker, jusqu’à 6 mains) — suivi de mains dans un Web Worker dédié, délégué GPU avec repli CPU
- Simulation de fluide WebGL — adaptation de la simulation de Pavel Dobryakov
- Web Audio API — synthèse multi-voix par oscillateurs, filtres, effets, compresseur
- getUserMedia — webcam et micro
- Web MIDI API — synchronisation sur horloge MIDI externe
Cas d’usage
Installation collective pour un événement ou un stand : plusieurs personnes peuvent peindre et improviser ensemble sur le même fluide, sans contrôleur ni matériel à partager — juste leurs mains devant une caméra.
Un seul fluide, autant de voix que de mains levées.



