Audio visualisation midi

, , , , , , , ,

Un moteur de visuels génératifs piloté au clavier MIDI et réactif au micro en temps réel, avec deux moteurs de rendu au choix et un système de hot-reload pour créer de nouvelles animations sans jamais quitter le show.


Vue d’ensemble

Audio Visualisation MIDI est une application Python de visuels génératifs pour performance live : chaque note jouée sur un clavier MIDI déclenche à la fois un échantillon audio et une réaction visuelle sur l’animation actuellement affichée, pendant qu’un fond sonore capté au micro nourrit en continu les formes à l’écran. Le pitch bend du clavier module le son en temps réel, et les animations elles-mêmes se naviguent à la volée avec les flèches du clavier.

Le projet propose deux moteurs de rendu interchangeables — pygame pour un pipeline 2D complet et rapide, vispy pour des animations OpenGL plus proches de la 3D — partageant la même architecture MIDI, audio et système de chargement d’animations.

Aperçu du projet Audio Visualisation MIDI — capture d'écran à venir
Capture d’écran générique — sera remplacée par une vraie capture d’une animation en direct.

Fonctionnalités

  • Deux moteurs de rendu — pygame pour un pipeline 2D complet, vispy pour des animations OpenGL, avec la même logique MIDI et audio partagée entre les deux.
  • Réaction au clavier MIDI — chaque note joue un échantillon audio et notifie l’animation affichée, sans jamais changer l’animation en cours.
  • Pitch bend en temps réel — la molette de pitch du clavier module la hauteur du son joué, par rééchantillonnage à la volée.
  • Fond sonore réactif — le micro alimente en continu les animations avec l’amplitude et la forme d’onde captées en direct.
  • Bibliothèque d’animations extensible — chaque animation est un simple fichier Python respectant une interface commune, chargé automatiquement au démarrage.
  • Hot-reload — recharge à chaud les animations et les échantillons sans redémarrer l’application, pour itérer en pleine performance.
  • Mode boucle et plein écran — boucle des échantillons et bascule plein écran au clavier, avec aide contextuelle affichable à tout moment.

Sous le capot

L’application tourne en un seul processus, avec un thread dédié qui interroge en continu le clavier MIDI et pousse les événements dans une file thread-safe consommée par la boucle principale, et un flux audio en entrée qui capte le micro en arrière-plan pour calculer une amplitude lissée.

Chaque animation est un simple fichier Python respectant une interface attendue (une méthode de dessin, et en option des callbacks pour les notes MIDI ou le passage en plein écran) : au démarrage, un chargeur dynamique importe automatiquement tous les fichiers du dossier d’animations, dans l’ordre naturel. Ajouter un nouveau visuel revient donc à déposer un fichier dans le bon dossier, sans toucher au reste du programme — et la touche de rechargement à chaud permet de le tester immédiatement.

Les notes MIDI ne changent jamais l’animation affichée : elles la notifient (si elle implémente le callback correspondant) et déclenchent en parallèle la lecture d’un échantillon audio associé à la note, avec fondu de sortie à l’arrêt et un décalage de hauteur possible via la molette de pitch bend, par rééchantillonnage du flux audio en temps réel.

Une animation notable, dédiée exclusivement au clavier MIDI (elle ignore le micro), fait réagir un banc de douze poissons — un par note chromatique — avec un style de nage qui change selon le registre joué et une intensité de panique proportionnelle à la vélocité de la note.


Contrôles

ToucheAction
← / →Animation précédente / suivante
FBascule plein écran
BActive / désactive la boucle des échantillons
HAffiche / masque l’aide
RRecharge à chaud les animations et échantillons
EspacePause / reprise
Échap / QQuitte le programme
Notes MIDITransmises à l’animation active + lecture de l’échantillon associé
Molette de pitchPitch bend en temps réel sur l’échantillon joué

Stack technique

  • Python 3
  • Pygame — rendu 2D, fenêtrage et lecture MIDI
  • Vispy — rendu OpenGL pour les animations 3D
  • NumPy — traitement du signal audio et des visuels
  • SoundDevice — capture micro et lecture des échantillons en flux
  • SoundFile — chargement des fichiers audio (WAV, MP3, OGG, FLAC, AIFF)
  • SciPy — traitements numériques additionnels
  • Noise — génération de bruit procédural pour les animations
  • PyQt5 — dépendance graphique pour l’un des moteurs de rendu
  • OpenCV / MoviePy — traitement vidéo pour certaines animations

Cas d’usage

Performance live et VJing au clavier MIDI, accompagnement visuel de sets ou de répétitions, installations audio-réactives, ou simplement terrain de jeu pour prototyper rapidement de nouveaux visuels génératifs grâce au hot-reload — sans jamais interrompre l’affichage en cours.

Une note jouée, un son qui part, une forme qui répond — le clavier devient pinceau.

Détails


Client

Projet personnel

Live


Projet précédent

Projet suivant

Autres projets