Chantez ou fredonnez : votre voix est captée, sa hauteur détectée en temps réel, puis rejouée harmonisée par un orchestre céleste entièrement synthétisé.
Vue d’ensemble
Melodic — « Celestial Orchestra » — écoute le micro, détecte la note chantée ou fredonnée, la cale sur la gamme musicale choisie, puis la rejoue instantanément à travers un instrument synthétisé au choix (flûte, cristal, vibraphone, harpe, violoncelle, marimba), avec harmonies et effets. La voix n’est jamais reproduite telle quelle : c’est sa hauteur qui pilote un véritable orchestre virtuel, avec un mode solo, duo ou chœur pour épaissir chaque note en accord. Un visualiseur réactif — barres de spectre, forme d’onde, anneaux de pulsation, particules et halo — accompagne le tout à l’écran, coloré selon la dernière note détectée.
L’application est pensée pour tourner aussi bien intégrée dans une page que directement dans le navigateur, avec une attention particulière portée à iOS où les contraintes de l’`AudioContext` et de l’arrière-plan sont plus strictes qu’ailleurs.
Fonctionnalités
- Détection de hauteur vocale en direct — un détecteur YIN fait maison identifie la note chantée frame par frame, filtrée par énergie et facteur de crête.
- Six instruments synthétisés — flûte, cristal, vibraphone, harpe, violoncelle, marimba, chacun construit par synthèse additive.
- Harmonisation automatique — modes solo, duo ou chœur pour ajouter des voix d’harmonie à chaque note captée.
- Gammes musicales sélectionnables — la note captée est toujours calée sur la gamme active avant d’être rejouée.
- Chaîne d’effets complète — saturation, égalisation, reverb et delay branchés/débranchés dynamiquement, compression et limiteur en sortie.
- Visualiseur réactif — spectre, forme d’onde, anneaux de pulsation, particules et halo vocal, teintés selon la note jouée.
- Enregistrement WAV — capture la sortie de l’orchestre synthétisé (pas la voix brute) et la télécharge.
Sous le capot
Toute l’application est une seule boucle qui va du micro au haut-parleur. Une boucle `requestAnimationFrame` récupère à chaque frame les données temporelles du micro et lance un détecteur de hauteur YIN fait maison, gated par l’énergie RMS et le facteur de crête du signal (seuils abaissés sur iOS). Une fois une hauteur stable confirmée sur plusieurs frames et throttlée, la fréquence est calée sur la note la plus proche de la gamme active puis déclenche la synthèse : des voix d’harmonie sont ajoutées selon le mode choisi, chacune construisant son enveloppe de gain/panoramique et un léger chorus avant de rejoindre le bus principal.
La chaîne de sortie passe par une saturation, une égalisation à plusieurs bandes, un dry/wet séparé pour la reverb (une réponse impulsionnelle générée procéduralement) et le delay — connectés et déconnectés dynamiquement plutôt que toujours en ligne — puis un compresseur et un limiteur avant la sortie finale. iOS reçoit un traitement à part entière : l’`AudioContext` doit être créé ou repris dans un geste utilisateur, et une veille en `setInterval` relance la boucle et l’audio si Safari les a suspendus en arrière-plan.
Stack technique
- Vanilla JS, zéro framework
- Web Audio API — synthèse additive, effets, détection de pitch (YIN), enregistrement WAV
- getUserMedia — capture du micro
- Canvas 2D — visualiseur (spectre, forme d’onde, particules, halo)
Cas d’usage
Un instrument vocal à essayer en démo portfolio, en jeu créatif pour fredonner une mélodie sans savoir jouer d’instrument, ou en installation sonore réactive à la voix des visiteurs.
Fredonnez, et un orchestre entier vous répond.



