Un thérémine gestuel : votre corps pilote une note continue au-dessus d’un visuel ASCII génératif, sans jamais toucher un instrument.


Vue d’ensemble

Thérémine glitch reproduit à la webcam le principe du thérémine, cet instrument qu’on joue sans le toucher : la main droite contrôle la hauteur de la note (position horizontale pour un léger bend, hauteur pour la note elle-même) et la vibrato via les doigts, pendant que la main gauche règle le volume par sa hauteur — et qu’un poing fermé coupe instantanément le son. Le squelette du corps entier est suivi en direct et sert de base à un visualiseur génératif complet : nébuleuse, oscilloscope, aura, vagues, traînées aux poignets, particules, arcs électriques et repères de note.

Derrière ce visualiseur, une seconde couche affiche le flux de la webcam converti en art ASCII génératif, avec cinq styles au choix (matrice, néon, mosaïque, glitch, esquisse), dont la couleur se synchronise en direct avec la hauteur de la note jouée. Un enregistreur permet de capturer le son joué et de le télécharger en fichier audio.

Aperçu du projet Thérémine glitch — capture d'écran à venir
Capture d’écran générique — sera remplacée par une vraie photo de l’expérience en direct.

Fonctionnalités

  • Note continue au geste — la main droite pilote hauteur et léger bend, avec vibrato au mouvement des doigts ; la main gauche pilote le volume et coupe le son en poing fermé.
  • Quatre instruments — thérémine, synthé, cordes ou nappe (pad), sélectionnables à la volée.
  • Gammes multiples — la note détectée est toujours calée sur la gamme active (pentatonique par défaut).
  • Visualiseur génératif complet — nébuleuse, oscilloscope, aura, vagues, traînées de poignets, particules et arcs électriques réagissant à la note et au volume joués.
  • Caméra en ASCII — cinq styles de rendu ASCII de la webcam en fond, dont la teinte suit la hauteur de la note en direct.
  • Mode dégradé automatique — si le suivi des mains échoue, l’application repasse en mode basique (poignets seuls, sans détection fine des doigts) plutôt que de planter.
  • Enregistrement audio — capture et export du son joué en fichier téléchargeable.

Sous le capot

Deux pipelines de vision par ordinateur tournent en parallèle sur le même flux vidéo : un modèle de détection de pose (MoveNet) qui anime la boucle principale et le squelette affiché, et un modèle de suivi des mains (MediaPipe HandLandmarker) qui tourne sur son propre intervalle et vient enrichir la pose avec la position fine des doigts. Les deux résultats sont recombinés à chaque frame, avec une persistance courte des données de main pour éviter tout scintillement si la détection rate une frame.

La hauteur de note suit une échelle exponentielle sur toute l’étendue de fréquences couverte (de C2 à C6), avant d’être calée sur la note la plus proche de la gamme active ; fréquence et volume sont lissés dans le temps pour éviter les à-coups. Le son lui-même est un graphe audio complet — instrument, vibrato, distorsion, trémolo, filtre, réverbération puis limiteur — et la note est jouée en continu : elle ne redémarre jamais à chaque frame, seul le passage silence/son déclenche un vrai démarrage ou arrêt, avec un portamento qui suit le geste en douceur.


Stack technique

  • Vanilla JS (modules ES6), zéro framework
  • TensorFlow.js + MoveNet — détection de pose corporelle en direct
  • MediaPipe Tasks Vision (HandLandmarker) — suivi fin des doigts par main
  • Tone.js — graphe audio complet (instrument, vibrato, distorsion, trémolo, filtre, réverbération)
  • Canvas 2D — visualiseur génératif et rendu ASCII de la caméra
  • MediaRecorder — enregistrement et export audio

Cas d’usage

Un instrument sans contact pour explorer le geste musical, une démo portfolio de suivi de pose et de mains combiné, ou simplement un jouet audiovisuel à improviser devant la webcam.

Pas de corde à pincer, pas de touche à presser — seulement l’air entre vos mains et l’écran.

Détails


Client

Projet personnel


Projet précédent

Projet suivant

Autres projets